我们有一个构建成jar文件的项目A和一个包含对项目A的依赖的项目B.不管怎样,当Jenkins构建项目B时,它并不总是选择项目A的最新版本,即使它在版本范围内。
例如,我刚刚在项目B上进行了构建,即使项目A的最新版本是projectA-1.0.20160425-2125.54.jar,它也选择了早期版本的core-1.0.20160422-1926.49.jar。
如何解决这个问题,以便项目B始终在该范围内获取最新的Project A版本?
以下是更多详情......
在Jenkins中,项目A使用此Maven3系列构建:
clean pmd:pmd deploy -P buildServer -DversionMajor=1 -DversionMinor=0 -DbuildNumber=$BUILD_NUMBER
在Jenkins中,项目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>
答案 0 :(得分:1)
我在定义版本时会使用-SNAPSHOT分类器,这是一种标准的maven机制。那就是:
将项目定义为1.2-SNAPSHOT,这样世界SNAPSHOT将在构建时自动替换为时间戳。
然后在项目B参考A上使用1.2-SNAPSHOT,那么maven将自动选择具有最大时间戳的A版本。我建议你看看这篇关于SNAPSHOTs的短文:http://www.tutorialspoint.com/maven/maven_snapshots.htm