管理されていない依存関係を Maven プロジェクトに追加する
最終更新日 2019年12月16日(月)
Table of Contents
一部の Java アプリケーションには、パブリックまたはプライベートの Maven リポジトリで入手できない依存関係があります (後者はカスタムの settings.xml ファイル)を使用してアクセスできます)。このガイドでは、これらの管理されていないライブラリをアプリケーションプロジェクトに追加する方法と、追加したライブラリの検索方法を Maven に指示する方法について説明します。
groupId、artifactId、version パラメータの選択
どのパブリック Maven リポジトリにもないライブラリ mylib.jar
にアプリが依存しているとします。まず、ライブラリの groupId、artifactId、および version を定義する必要があります。これらのパラメータは開発者にはあまり意味がありませんが、Maven ではすべての依存関係にこの情報が必要です。
以下の値を使用します。
- groupId: com.example
- artifactId: mylib
- version: 1.0 (または、ライブラリのバージョン番号がある場合はそのバージョン)
ローカルの Maven リポジトリディレクトリを作成する
プロジェクトのルートは当初、次のような内容です。
yourproject
+- pom.xml
+- src
repo
という名前の標準 Maven リポジトリディレクトリを追加し、group は com.example
、version は 1.0
にします。
yourproject
+- pom.xml
+- src
+- repo
アーティファクトをリポジトリにデプロイする
Maven では、次のように mvn deploy:deploy-file
ゴールを使用してアーティファクトをデプロイできます。
mvn deploy:deploy-file -Durl=file:///path/to/yourproject/repo/ -Dfile=mylib-1.0.jar -DgroupId=com.example -DartifactId=mylib -Dpackaging=jar -Dversion=1.0
いくつかの Maven メタデータと JAR ファイルがプロジェクトに含まれるようになります。
yourproject
+- pom.xml
+- src
+- repo
+- com
+- example
+- mylib
+- maven-metadata.xml
+- ...
+- 1.0
+- mylib-1.0.jar
+- mylib-1.0.pom
+- ...
Pom ファイルを更新する
ここで、pom.xml を編集して、このリポジトリを <repositories/>
要素に追加します。
<repositories/>
要素がない場合、作成が必要な場合があります。
<repositories>
<!--other repositories if any-->
<repository>
<id>project.local</id>
<name>project</name>
<url>file:${project.basedir}/repo</url>
</repository>
</repositories>
サブモジュールからリポジトリを使用する場合、<url>
要素の ${project.parent.baseDir}
プロパティを置き換える必要があります。
これで、この jar を通常のように依存関係として追加できます。
<dependency>
<groupId>com.example</groupId>
<artifactId>mylib</artifactId>
<version>1.0</version>
</dependency>
Git にコミットする
必ず、ローカルの repo フォルダーを Git に追加およびコミットしてください。
$ git add repo
$ git commit -m 'adding project local maven repo, with mylib.jar 1.0'
次にプロジェクトをプッシュしたときに、依存関係が解決され、アプリケーションは問題なくビルドされます。ローカルの repo フォルダーと jar はアプリケーションコードによってチェックインされるため、アプリに対しては非公開のままになります。