Maven プロジェクトでのリポジトリと依存関係の設定
Kotlin Maven プロジェクトでは、デフォルトの Maven Central リポジトリ以外のアーティファクトの検索場所を構成したり、プロジェクトが依存するライブラリを定義したりできます。
リポジトリの宣言
デフォルトでは、すべての Maven プロジェクトで mavenCentral リポジトリが利用可能です。他のリポジトリのアーティファクトにアクセスするには、<repositories> セクションでリポジトリ名にカスタム ID とその URL を指定します。
<repositories>
<repository>
<id>spring-repo</id>
<url>https://repo.spring.io/release</url>
</repository>
</repositories>Gradle プロジェクトでリポジトリとして
mavenLocal()を宣言している場合、Gradle プロジェクトと Maven プロジェクトを切り替える際に問題が発生する可能性があります。詳細については、リポジトリの宣言を参照してください。
一般に、ライブラリへの依存関係を追加するには、<dependencies> セクションに新しい <dependency> エントリを宣言する必要があります。
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-serialization-json</artifactId>
<version>1.11.0</version>
</dependency>
</dependencies>依存関係の設定
標準ライブラリへの依存関係
Kotlin には、アプリケーションで使用できる広範な標準ライブラリがあります。標準ライブラリの依存関係を手動で追加するか、<extensions> オプションを有効にして、不足している場合に自動的にセットアップされるように構成できます。
自動セットアップ
Kotlin Maven プラグインが提供する <extensions> オプションを使用すると、手動構成を回避できます。プロジェクトで定義されていない場合、kotlin-stdlib の依存関係が自動的に追加されます。たとえば、新しい Kotlin Maven プロジェクトを作成する場合や、既存の Java Maven プロジェクトに Kotlin を導入する場合などです。
すでに別のバージョンなどで kotlin-stdlib の依存関係を宣言している場合、<extensions> を指定した Kotlin Maven プラグインはそれを上書きしません。
標準ライブラリの自動追加を無効(オプトアウト)にすることもできます。その場合は、<properties> セクションに以下を追加します。
<project>
<properties>
<kotlin.smart.defaults.enabled>false</kotlin.smart.defaults.enabled>
</properties>
</project>このプロパティは、標準ライブラリの自動追加だけでなく、ソースルートパスの登録も無効にします。他の
<extensions>機能には影響しません。
手動構成
プロジェクトに Kotlin の標準ライブラリを手動で追加するには、pom.xml ファイルの dependencies セクションを次のように更新します。
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<!-- <properties/> で指定された kotlin.version を使用します: -->
<version>${kotlin.version}</version>
</dependency>
</dependencies>1.8 より前の Kotlin バージョンで JDK 7 または 8 をターゲットにしている場合:
- 1.8 未満の場合は、それぞれ
kotlin-stdlib-jdk7またはkotlin-stdlib-jdk8を使用してください。- 1.2 未満の場合は、それぞれ
kotlin-stdlib-jre7またはkotlin-stdlib-jre8を使用してください。
テストライブラリへの依存関係
プロジェクトで Kotlin リフレクションやテストフレームワークを使用する場合は、関連する依存関係を追加します。 リフレクションライブラリには kotlin-reflect を、テストライブラリには kotlin-test および kotlin-test-junit5 を使用します。
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-reflect</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test-junit5</artifactId>
<scope>test</scope>
</dependency>
</dependencies>kotlinx ライブラリへの依存関係
kotlinx ライブラリの場合、ベースのアーティファクト名、または -jvm サフィックスが付いた名前のいずれかを追加できます。klibs.io にあるライブラリの README ファイルを参照してください。
たとえば、kotlinx.coroutines ライブラリへの依存関係を追加するには、次のようにします。
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-core</artifactId>
<version>1.11.0</version>
</dependency>
</dependencies>kotlinx-datetime ライブラリへの依存関係を追加するには、次のようにします。
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-datetime-jvm</artifactId>
<version>0.8.0</version>
</dependency>
</dependencies>BOM による依存関係の管理
Bill of Materials (BOM) は、プロジェクト内の依存関係のバージョンを管理する特別な POM ファイルです。これにより、関連するアーティファクトの整合性を保ち、バージョンの競合を避けることができます。
Kotlin は kotlin-bom アーティファクトを公開しており、kotlin-stdlib、kotlin-reflect、kotlin-test など、同じ Kotlin リリースに対応する Kotlin ライブラリのバージョンを指定しています。これは、プロジェクト内の他のライブラリが Kotlin アーティファクトに推移的依存関係(transitive dependencies)を持っている場合に、すべての依存関係が確実に同じ Kotlin バージョンに解決されるため、非常に有用です。
Kotlin BOM を使用するには、次のように pom.xml ファイルの <dependencyManagement> セクションにインポートします。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-bom</artifactId>
<version>2.4.10</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>BOM をインポートした後は、<dependencies> セクションで Kotlin の依存関係を宣言する際にバージョンを指定する必要はありません。バージョンは自動的に BOM ファイルから取得されます。
- BOM をインポートしただけでは、プロジェクトに依存関係は追加されません。明示的に宣言された依存関係や推移的依存関係のバージョンを制御するだけです。
- 依存関係に対して依然として
<version>を指定した場合、その値が BOM のバージョンを上書きします。
プロジェクトで、同時にリリースされる複数のライブラリを公開している場合は、ユーザーがそれらのライブラリのバージョンを同じように合わせられるように、独自の BOM を提供することもできます。独自の BOM を作成する方法については、Maven のドキュメントを参照してください。
