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
NicoPaez,感谢您的回答。你是否要附上你提到的文章的链接? – Erikson
哎呀!我刚刚添加了该链接。谢谢! – NicoPaez