我在多模塊項目中使用test-jar
依賴關係時遇到問題。例如,當我宣佈cleartk-syntax
模塊依賴於cleartk-token
模塊的test-jar
像這樣(完整代碼here):爲什麼「mvn compile」需要「test-jar」依賴關係
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.
Missing:
----------
1) org.cleartk:cleartk-token:test-jar:tests:0.7.0-SNAPSHOT
:
<modelVersion>4.0.0</modelVersion>
<groupId>org.cleartk</groupId>
<artifactId>cleartk-syntax</artifactId>
<version>0.5.0-SNAPSHOT</version>
<name>cleartk-syntax</name>
...
<dependencies>
...
<dependency>
<groupId>org.cleartk</groupId>
<artifactId>cleartk-token</artifactId>
<version>0.7.0-SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
我碰到下面的錯誤,如果我使用maven 2運行mvn compile
如果我用maven 3我得到的錯誤:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.654s
[INFO] Finished at: Mon Jan 24 21:19:17 CET 2011
[INFO] Final Memory: 16M/81M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project cleartk-syntax: Could not resolve
dependencies for project org.cleartk:cleartk-syntax:jar:0.5.0-SNAPSHOT: Could
not find artifact org.cleartk:cleartk-token:jar:tests:0.7.0-SNAPSHOT
在後一種情況下,我看齊特別困惑,因爲我原以爲它應該尋找test-jar
類型的工件,而不是jar
類型。
使用maven 2或maven 3,我可以通過運行mvn compile package -DskipTests
來編譯它。使用maven 3,我也可以通過運行mvn compile test-compile
來編譯它。
但爲什麼maven 2或maven 3在compile
階段尋找test-jar
依賴關係?它不應該等到test-compile
階段才能尋找這樣的依賴關係嗎?
更新:答案是,我的編譯階段使用的maven-exec-plugin,requires dependency resolution of artifacts in scope:test。我創建了a feature request to remove the scope:test dependency。
但是,如果是這樣的話,爲什麼`mvn compile package`工作? – Steve 2011-01-24 22:54:25
你已經提到它只在你提供-DskipTests = true變量時纔有效。這可以是內部優化maven的東西嗎? – WeMakeSoftware 2011-01-25 08:36:10
它沒有使用-DskipTests。我只是補充說,因爲我只是試圖編譯,而不是測試。 – Steve 2011-01-25 14:44:58