Jenkins Maven 3 build没有选择最新版本的匹配版本范围

问题描述:

我们有项目A,构建成一个jar文件和项目B,其中包含对项目A的依赖项。不知何故,当Jenkins构建项目B时,它并不总是选择项目A的最新版本,即使它在版本范围内。Jenkins Maven 3 build没有选择最新版本的匹配版本范围

例如,我只是做了项目B的构建,即使最新版本的项目A是projectA-1.0.20160425-2125.54.jar,它也找到了早期版本,它是core-1.0.20160422-1926.49.jar 。

如何解决这个问题,使项目B总是选择范围内的最新项目A构建?

这里有更多的细节...

在詹金斯,A计划是利用这个Maven3行建:

clean pmd:pmd deploy -P buildServer -DversionMajor=1 -DversionMinor=0 -DbuildNumber=$BUILD_NUMBER 

在詹金斯,项目B使用此Maven3行建:

clean pmd:pmd deploy generate-sources javadoc:jar source:jar -DversionMajor=7 -DversionMinor=0 -DbuildNumber=$BUILD_NUMBER 

这里是两个项目的pom.xml文件的摘录...

项目A:

<groupId>vod</groupId> 
<artifactId>projectA</artifactId> 
<version>${versionMajor}.${versionMinor}.${maven.build.timestamp}.${buildNumber}</version> 

项目B:

<groupId>vod</groupId> 
<artifactId>projectB</artifactId> 
<version>${versionMajor}.${versionMinor}.${maven.build.timestamp}.${buildNum 
<dependency> 
    <groupId>vod</groupId> 
    <artifactId>projectA</artifactId> 
    <version>[1.0,2.0)</version> 
</dependency> 

定义版本时,我会用-SNAPSHOT分类,这是一个标准的Maven机制。即:

定义项目版本为1.2-SNAPSHOT,这样世界SNAPSHOT将在构建时自动替换为时间戳。

然后在项目B中引用A和1.2-SNAPSHOT,这样Maven会自动选择具有最大时间戳的A版本。我建议看看这篇关于SNAPSHOTs的短文:http://www.tutorialspoint.com/maven/maven_snapshots.htm

+0

NicoPaez,感谢您的回答。你是否要附上你提到的文章的链接? – Erikson

+0

哎呀!我刚刚添加了该链接。谢谢! – NicoPaez