メインプロジェクトと、リポジトリに含まれていない依存関係を持つコモンズプロジェクトがある場合は、using <scope>system</scope>
を含める必要があります。オプションのシステム依存関係により、「無効な推移的な依存関係が存在しない場合」が発生します。
システム依存関係は、他のプロジェクトを気にしないように、mavenプロパティ${project.basedir}
、I made it <optional>true</optional>
を使用して相対URLを使用して定義されているため、この依存関係を正しいパスで再定義する必要があります。
コモンズのpom.xml:メインプロジェクトのPOMで
<dependency>
<groupId>thirdparty-group</groupId>
<artifactId>artifact</artifactId>
<version>1.4.2</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/dependency.jar</systemPath>
<optional>true</optional>
</dependency>
:
<dependency>
<groupId>my-group</groupId>
<artifactId>commons</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>thirdparty-group</groupId>
<artifactId>artifact</artifactId>
<version>1.4.2</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/dependency.jar</systemPath>
</dependency>
は明らかコモンズとプロジェクトのメインの両方にdependency.jarあります。
コモンズジャーは、問題なく適切にインストールされます。しかし、メインプロジェクトで使用する場合でも、結果は次のとおりです。
[WARNING]私のグループのためのPOM:コモンズ:jarファイル:1.0-SNAPSHOTが無効、推移的依存関係(もしあれば)利用できませんです。 1-SNAPSHOT
[ERROR] thirdparty-groupのための 'dependencies.dependency.systemPath':アーティファクト:jarは絶対パスを指定する必要がありますが、$ { project.basedir} /lib/dependency.jar @
ビルドは続行されますが、推移的なランタイム依存関係は現在、彼のアプリケーション。
メインプロジェクトと関連性がないコモンズからの依存性についてmavenが迷惑を掛けているのはなぜですか(optionalなので、これは推移的依存関係に含まれているのはなぜですか)。 この問題を回避するには?
残念ながら、レポにシステム依存関係を置くことはオプションではありません。
このような問題の最も簡単な解決策は、単にリポジトリマネージャをインストールし、そのような種類のアーティファクトをインストールするだけです。そしてあなたは大丈夫です...システムスコープの依存関係を定義する必要はありません... – khmarbaise