我有一个多模块Maven项目,其中有多个微服务作为模块,因此我的父母中列出了一些模块,pom.xml如下所示:
pom.xml
<modules> <module>core</module> <module>model-base</module> <module>module1</module> <module>module2</module> ... <module>module5</module> <module>module7</module> <module>module6</module> </modules>
这里module7是依赖项,module5, 6因此我在下面列出了依赖项module7 pom.xml:
module7
module5, 6
<parent> <artifactId>pojectA</artifactId> <groupId>com.domain</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>module7</artifactId> <dependencies> <dependency> <groupId>com.domain</groupId> <artifactId>core</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.domain</groupId> <artifactId>module5</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.domain</groupId> <artifactId>module6</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies>
当我mvn clean package在本地运行时,按预期方式在module5, 6被调用之前,module7但是在詹金斯中,它正在尝试构建module 5然后module7使构建失败说:
mvn clean package
module 5
[ERROR] Failed to execute goal on project module7: Could not resolve dependencies for project module7:jar:1.0-SNAPSHOT: Could not find artifact module6:jar:1.0-SNAPSHOT -> [Help 1]
我是否需要运行其他作业或重新排序模块,pom.xml从本地到Jenkins有什么不同?感谢对此的任何帮助。
众所周知,问题在于子模块之间的依赖关系失败,因为它们尚未安装在本地存储库中(因为尚未构建)。导致此问题的目标(无论如何对我而言)是mvn test,由调用mvn package。您的本地构建可能会起作用,因为在某个时候您已经完成了a mvn install,这已经引导了您的系统。
mvn test
mvn package
mvn install
在Jenkins中,我发现使这些构建起作用的唯一方法是使用“ 预构建”步骤 调用Maven安装目标,然后照常构建主要步骤。