のは、私はさらにBにコンパイル依存性を有するジャーAにコンパイル依存性を持っているとしましょうコンパイルし、私のテストはB.Mavenの:私は「テスト」依存関係を宣言すると、テスト対推移
に依存していますこれはBの推移的なコンパイル依存関係を上書きしてしまうので、私はもうプロジェクトをコンパイルできません。私がBを省略すると、すべてが機能しますが、推移的な依存関係を直接使用するため、奇妙に感じます。
このための "Mavenのような"ソリューションは何でしょうか?
例:
私はその後、
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
私の依存関係を持っている場合は、次のリストは次のとおりです。
commons-codec:commons-codec:jar:1.2:compile
commons-httpclient:commons-httpclient:jar:3.1:compile
commons-logging:commons-logging:jar:1.0.4:compile
ツリーは次のとおりです。
--- maven-dependency-plugin:2.8:tree (default-cli) @ testcompile ---
de.continentale.spu:testcompile:jar:0.0.1-SNAPSHOT
\- commons-httpclient:commons-httpclient:jar:3.1:compile
+- commons-logging:commons-logging:jar:1.0.4:compile
\- commons-codec:commons-codec:jar:1.2:compile
私は
を使用している場合<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.0.4</version>
<scope>test</scope>
</dependency>
それから私は、依存関係を取得:リスト
commons-codec:commons-codec:jar:1.2:compile
commons-httpclient:commons-httpclient:jar:3.1:compile
commons-logging:commons-logging:jar:1.0.4:test
は木がある:
--- maven-dependency-plugin:2.8:tree (default-cli) @ testcompile ---
de.continentale.spu:testcompile:jar:0.0.1-SNAPSHOT
+- commons-httpclient:commons-httpclient:jar:3.1:compile
| \- commons-codec:commons-codec:jar:1.2:compile
\- commons-logging:commons-logging:jar:1.0.4:test
のでコモンズ・ロギングは、その範囲を変更し、任意のより多くのコンパイルには使用できません。
EDIT2:src/main/javaでcommons-loggingから何かを使用すると、最初のバージョンはコンパイルされず、2番目のバージョンはコンパイルされません。追加のテスト依存関係は、推移的なコンパイル依存関係を「隠す」。
...私が持っている問題はあなたの問題ではありません。それはおやすみからのいくつかの関連するビットを表示するのに役立ちます – Gimby
私は最小限の例を構築しようとします。いくつかのスコープが直接的かつ過渡的に見つかった場合、どのスコープが "勝つ"かを規定するルールを知っていますか? –
あなたは存在しない可能性がある問題を記述していますが、他の問題があるためにそのようにしか見えません。テストスコープは、通常のコンパイルスコープ/依存関係とは関係ありません。 – Gimby