【问题标题】:Is there a way to set the Maven version number dynamically?有没有办法动态设置 Maven 版本号?
【发布时间】:2013-10-19 03:22:05
【问题描述】:

我想使用 Maven 制作 zip 格式的工件。给你一些背景;我的项目包括一个 APS 包(应用程序打包标准,用于在 Parallels 平台上配置云应用程序)。这个包是一个 zip 文件,其中包含 XML 和 PHP 文件的组合。它由 Eclipse 中的 APS 插件生成,其名称始终包含其内容的版本和发布号。

我要做的是使用 Maven 生成一个 zip 文件,该文件是一种最终将发送给客户的候选版本,其中不仅包括实际的 APS 包,还包括其他文件,例如 README、用户指南.pdf等;。我希望这个 zip 文件的名称包含 APS 包的版本号的版本号。目前我可以通过使用“mvn -Dversion=1.2.3-4 package”之类的东西手动生成它,但我想自动化这个过程并最好从 Jenkins 运行它。

基本上,我的策略是运行一个脚本,该脚本将从初始 APS 包中提取版本号,一旦完成,我的脚本可以调用 Maven 并将此参数传递给它,以便它可以生成带有正确的版本号。这很好,但我需要手动运行这个脚本,我正在寻找一个自动化的过程。

我的问题是;是否可以从 Maven 中调用此脚本并使用其返回作为参数在运行时设置版本名称(或将生成的文件的名称)?正如我所提到的,我最终希望 Jenkins 来处理这个问题。它可以获取 pom 文件,但我不确定它如何“自动配置”自身以拥有正确的版本号。

先谢谢了。

【问题讨论】:

标签: maven jenkins


【解决方案1】:

我使用 SVN(或任何源版本控制系统)版本来识别软件版本。

只需执行此操作

REVISION=`svn info | grep '^Revision:' | sed -e 's/^Revision: //'`

在 sourcers 文件夹中,您可以在 $REVISION 中获得正确的值,然后您可以将它用于您的 maven 构建

mvn -Dversion=1.2.3-$REVISION package

简单干净

【讨论】:

  • 使用变量 Jenkins suppiles 怎么样? $SVN_REVISION
【解决方案2】:

从 jenkins 构建中,您可以使用带有 ${BUILD_NUMBER} 的配置文件:

<profile>
         <id>jenkins</id>
         <build>
             <finalName>${artifactId}-${version}-${BUILD_NUMBER}</finalName>
          </build>
</profile>

然后在jenkins中运行:

clean install -Pjenkins

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-24
    • 2023-03-09
    • 2023-03-27
    • 2017-04-29
    • 2023-04-05
    • 2019-10-10
    • 2016-07-13
    • 2021-11-13
    相关资源
    最近更新 更多