我有一個項目,其中maven-enforcer規則失敗,使用非獨特的快照(這是令人討厭的唯一類型的快照在Maven 3中支持)的多模塊構建。Maven獨特的快照和依賴關係融合
例如,假設 - >是 「依賴」 關係,並且:
- 模塊-A - >模塊-B - >模塊-C
- 模塊-A - >模塊-C
並且模塊B和模塊C作爲唯一構建存在於快照存儲庫中。所有在POM中聲明的模塊版本都是1.0-SNAPSHOT。現在
,構建模塊A失敗:
mvn -pl Module-A install
結果:
[INFO] --- maven-enforcer-plugin:1.0.1:enforce (enforce) @ Module-A ---
[ERROR]
Dependency convergence error for com.vivosys.project:Module-C:1.0-SNAPSHOT paths to dependency are:
+-com.vivosys.project:Module-A:1.0-SNAPSHOT
+-com.vivosys.project:Module-B:1.0-20111228.032527-8
+-com.vivosys.project:Module-C:1.0-SNAPSHOT
and
+-com.vivosys.project:Module-A:1.0-SNAPSHOT
+-com.vivosys.project:Module-C:1.0-20111228.032527-6
的傳遞依賴被解析爲一個非唯一快照生成,而是直接依賴性被解析爲一個獨特的快照構建。
我正在使用maven 3.0.3,maven-enforcer 1.0.1。存儲庫是使用獨特快照選項的Artifactory 2.4.2(由於Maven 3不再支持非唯一快照,因此Artifactory建議使用該選項)。
解決方案?
更新:看起來像artifactory允許覆蓋maven客戶端行爲並將非唯一快照存儲在存儲庫中。然而,出於某種原因,Artifactory不建議這樣做(請參閱http://wiki.jfrog.org/confluence/display/RTF/Local+Repositories上的「Maven 3」blurb),所以其他解決方案仍然受歡迎。
感謝您提供錯誤報告的鏈接。請注意,模塊B和C *都已明確聲明爲A的依賴關係。實際上,這是導致收斂失敗的原因。 – Raman 2011-12-29 18:11:04