【问题标题】:Jenkins Maven 3 build does not pick up the latest version matching version rangeJenkins Maven 3 build 没有选择匹配版本范围的最新版本
【发布时间】:2016-04-26 03:37:35
【问题描述】:

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

例如,我刚刚在项目 B 上进行了构建,即使项目 A 的最新版本是 projectA-1.0.20160425-2125.54.jar,它也选择了早期版本,即 core-1.0.20160422-1926.49.jar。

如何解决这个问题,以便项目 B 始终选择范围内的最新项目 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>

【问题讨论】:

    标签: java jenkins maven-3


    【解决方案1】:

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

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

    然后在项目 B 上使用 1.2-SNAPSHOT 引用 A,这样 maven 将自动选择具有最大时间戳的 A 构建。推荐看看这篇关于 SNAPSHOT 的短文:http://www.tutorialspoint.com/maven/maven_snapshots.htm

    【讨论】:

    • NicoPaez,谢谢您的回答。你要附上你提到的文章的链接吗?
    • 哎呀!我刚刚添加了链接。谢谢!
    猜你喜欢
    • 2021-12-02
    • 1970-01-01
    • 2013-01-04
    • 2017-12-28
    • 2018-09-19
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多