這是ear項目的簡化示例,父pom彙總了EAR,EJB和jar。Jenkins和maven多模塊項目缺失工件
我有這樣的結構在Maven項目,保存在SVN:
parent/
|- pom.xml
|- modulA/
| |- pom.xml
|- modulB/
| |- pom.xml
modulB有MODULA
的依賴pom.xml中有模塊部分
<modules>
<module>modulA</module>
<module>modulB</module>
</modules>
而且依賴管理部分
<dependencyManagement>
<dependencies>
<dependency>
<groupId>group</groupId>
<artifactId>modulA</artifactId>
<version>0.0.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>group</groupId>
<artifactId>modulB</artifactId>
<version>0.0.2-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
子模塊引用父
<parent>
<groupId>group</groupId>
<artifactId>parent</artifactId>
<version>0.0.2-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
在我的電腦當我編譯,第一次使用Maven 2.2.1(窗口)
mvn clean compile
我沒有任何問題
但是....當詹金斯嘗試編譯首次(Maven的2.2.1完成RedHat)
Missing:
----------
1) modulA:jar:0.0.2-SNAPSHOT
Try downloading the file manually from the project website.
Then, install it using the command:
mvn install:install-file -DgroupId=group -DartifactId=modulA -Dversion=0.0.2- SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file
Alternatively, if you host your own repository you can deploy the file there:
mvn deploy:deploy-file -DgroupId=group -DartifactId=modulA -Dversion=0.0.2-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
Path to dependency:
1) modulB:ejb:0.0.2-SNAPSHOT
2) modulA:jar:0.0.2-SNAPSHOT
----------
1 required artifacts are missing.
爲什麼????????
之後,如果我將項目從我的電腦部署到Artifactory,Jenkins沒有問題,因爲Jenkins從存儲庫下載工件...但Jenkins爲什麼依賴存儲庫中的工件?
:(
由於提前
編輯:
我以爲dependencyManagement節只「定義」的依賴,但是如果一個子模塊不使用的依賴,依賴沒有添加到子模塊 我放棄了依賴管理部分,Jenkins中的問題仍然存在。
它適用於我的PC出問題。
是否有可能爲其中一個模塊獲得有效的POM?如果它在本地工作,那麼在問題出現之前,可能會將工件作爲開發的一部分部署到本地存儲庫,直到您試圖在新機器上構建(例如構建機器),纔會有效地隱藏它, – chrisbunney 2012-01-29 14:17:13
如果你在你的盒子上清理你的本地Maven倉庫,那麼第一次構建會在你的盒子上失敗?我猜是的,如果是這樣的話,那意味着構建中的東西在構建之前引用了modulA-0.0.2-SNAPSHOT.jar。很難說沒有看到更多的父母和模塊poms。 – BenjaminLinus 2012-01-30 06:31:03