Jenkins Maven 3版本没有获取最新版本匹配版本范围

时间:2016-04-26 03:37:35

标签: java jenkins maven-3

我们有一个构建成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>

1 个答案:

答案 0 :(得分:1)

我在定义版本时会使用-SNAPSHOT分类器,这是一种标准的maven机制。那就是:

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

然后在项目B参考A上使用1.2-SNAPSHOT,那么maven将自动选择具有最大时间戳的A版本。我建议你看看这篇关于SNAPSHOTs的短文:http://www.tutorialspoint.com/maven/maven_snapshots.htm