比方說,我有這對B.編譯依賴於爲jar的編譯依賴。此外,我的測試中有B.Maven的:測試與傳遞編譯
的依賴。當我宣佈一個「測試」的依賴在B上,這似乎覆蓋了B上的傳遞式編譯依賴關係,所以我不能編譯我的項目了。如果我忽略B,一切都可以工作,但是它感覺很奇怪,因爲我直接使用傳遞依賴。
什麼是「Maven-like」解決方案?
例:
如果我只有
<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
所以共享記錄改變了它的範圍,不提供任何更多的編譯。編輯2:如果我使用src/main/java中commons-logging的任何內容,那麼第一個版本編譯時,第二個版本不編譯。額外的測試依賴性「隱藏」傳遞式編譯依賴性。
...你描述的問題不是我有的問題。這將有助於看到一些來自poms – Gimby
的相關位,我將嘗試構建一個最小示例。你是否知道規定哪個範圍將「贏」,如果幾個範圍直接和傳遞? –
您正在描述一個可能不存在的問題,但由於其他問題而只能以這種方式出現。測試範圍與常規編譯範圍/依賴關係無關。 – Gimby