1. ホーム

[解決済み】Maven:相対パスでjarに依存関係を追加する

2022-04-04 21:57:58

質問

プロプライエタリなjarがあり、それをpomに依存関係として追加したいのですが、どうすればいいですか?

しかし、リポジトリに追加したくありません。というのも、通常のmavenコマンド、たとえば mvn compile などを、すぐに使えるようにすることです。(開発者が自分でリポジトリに追加することを要求せずに)。

jarをソース管理下のサードパーティーのlibに置き、pom.xmlファイルから相対パスでリンクさせたいのです。

これは可能なのでしょうか?どのように?

どのように解決するのですか?

<ブロッククオート

jarをソース管理下のサードパーティーのlibに置き、pom.xmlファイルから相対パスでリンクさせたいのですが。

あなたが本当にこれを望むなら(企業のリポジトリを使用できない場合は理解してください)、私のアドバイスは、プロジェクトにローカルの "ファイルリポジトリ" を使用することであり 使用しない a system スコープされた依存関係。その system このような依存関係は多くの状況 (たとえばアセンブリ) でうまく機能せず、利点よりも問題を多く引き起こします。

そこで、代わりに、プロジェクトにローカルなリポジトリを宣言します。

<repositories>
  <repository>
    <id>my-local-repo</id>
    <url>file://${project.basedir}/my-repo</url>
  </repository>
</repositories>

サードパーティのライブラリをインストールするには install:install-file と共に localRepositoryPath パラメータを使用します。

<ストライク

<ストライク
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<myGroup> \ 
                         -DartifactId=<myArtifactId> -Dversion=<myVersion> \
                         -Dpackaging=<myPackaging> -DlocalRepositoryPath=<path>

<ストライク

更新しました。 が表示されているようです。 install:install-file は無視されます。 localRepositoryPath バージョン2.2のプラグインを使用した場合。しかし、バージョン2.3以降のプラグインでは動作します。そのため、プラグインの完全修飾名を使用して、バージョンを指定してください。

mvn org.apache.maven.plugins:maven-install-plugin:2.3.1:install-file \
                         -Dfile=<path-to-file> -DgroupId=<myGroup> \ 
                         -DartifactId=<myArtifactId> -Dversion=<myVersion> \
                         -Dpackaging=<myPackaging> -DlocalRepositoryPath=<path>

maven-install-plugin documentation

最後に、他の依存関係と同じように宣言します。 system のスコープを使用します)。

<dependency>
  <groupId>your.group.id</groupId>
  <artifactId>3rdparty</artifactId>
  <version>X.Y.Z</version>
</dependency>

を使うよりも良い解決策だと思います。 system スコープを使用すると、依存関係は善良な市民として扱われます (たとえば、アセンブリに含まれるようになります)。

さて、企業環境においてこの状況に対処する正しい方法は、(ここではそうではないかもしれませんが)企業リポジトリを使用することであることを述べておきます。