这是一个 ear 项目的简化示例,父 pom 聚合了 EAR、EJB 和 jar。
我在一个 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 (windows) 编译时,在我的电脑中
mvn clean compile
我没有任何问题
但是....当 Jenkins 第一次尝试编译时(Maven 2.2.1 Linux 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.
为什么????????
之后,如果我将项目从我的 pc 部署到 Artifactory,Jenkins 就没有问题,因为 Jenkins 从存储库下载工件......但是为什么 Jenkins 依赖于存储库中的工件?
:(
提前致谢
编辑:
我认为dependencyManagement 部分仅“定义”依赖项,但如果子模块不使用依赖项,则依赖项不会添加到子模块中。我删除了dependencyManagement 部分,Jenkins 中的问题仍然存在。
它在我的电脑上运行没有问题。