2016-06-27 86 views
1

我有一个多模块Maven项目中,我有多个微服务模块,所以我在我的父母pom.xml列出像下面的模块:詹金斯构建失败,多模块Maven项目

<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所以我已经上市的依赖像下面我module7pom.xml

<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如预期的那样module7之前调用0,但在詹金斯它正在努力建立module 5然后module7决策构建失败,他说:

[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重新排序模块,怎么它与詹金斯的本地区别?感谢任何帮助。

+0

你确定詹金斯真的和你在本地构建的一样吗?这是构建控制台输出中唯一的错误吗?您能否从控制台输出中提供_Reactor Build Order_和_Reactor Summary_部分? –

+0

你有没有看到反应堆是根据你的依赖?原因module5,module6必须在module7之前建立? – khmarbaise

回答

0

由于可能很好理解,问题在于子模块之间的依赖性失败,因为它们尚未安装在本地存储库中(因为它们尚未构建)。造成这种情况的目标(无论如何)是mvn test,由mvn package调用。你的本地版本可能会起作用,因为在某个时候你已经完成了mvn install,这已经引导了你的系统。

在Jenkins中,我发现使这些构建工作的唯一方法是使用预构建步骤调用Maven安装目标,然后像平常一样构建主要步骤。

Jenkins config

0

模块的顺序不相关。 Maven认识到哪个项目取决于哪个其他项目并相应地设置了反应堆中的构建顺序。请参阅POM Reference, Aggregation (or Multi-Module)

列出模块时,您不需要考虑模块间依赖关系,即POM给出的模块排序并不重要。 Maven将拓扑排序模块,以便依赖关系始终在依赖模块之前构建。

+0

感谢您的答复...我明白,在POM订购模块对maven multimodule无关紧要。所以当我们在Jenkins或当地运行'mvn clean package'时,顺序应该与我的本地版本相同。但为什么我的本地建设取得成功,詹金斯失败了?任何想法? – user1653027