gpt4 book ai didi

Maven 部署忽略由 maven-versions 插件设置的项目版本

转载 作者:行者123 更新时间:2023-12-04 08:55:57 24 4
gpt4 key购买 nike

我有一个 Maven 项目“核心”。在项目的 pom.xml 中,版本是 0.1。
我在 Jenkins 中使用参数化构建并设置文本参数 myNewVersion=3.1。
我还设定了以下 Maven 目标:

versions:set -DnewVersion=${myNewVersion} versions:commit deploy

构建时,maven 将 pom.xml 中的版本正确更新为“3.1”。但是 maven deploy 任务将我的项目部署为“core-0.1”,版本仍然是 0.1。我的 Nexus 中相应 0.1 目录中包含的 pom 文件指出版本号“3.1”。

我该怎么做才能强制 maven 部署任务使用 maven 版本插件设置的正确版本?

非常感谢您的帮助。

编辑 1:
澄清我的需求:POM 中的项目版本不应说明实际的构建版本。我用它来确定我的“核心”项目与底层系统和 API 的兼容性。更详细地说:项目“core”从 jenkins 获得“interfaceVersion=3.1”或“interfaceVersion=4.0”参数。这决定了我的核心项目使用哪个版本来依赖另一个“库”包。

现在,我有两个 Jenkins 构建作业,一个用于 3.1,另一个用于核心项目的 4.0 库项目依赖项。每个都从 SVN check out 相同的项目代码,但将不同的版本参数传递给正在构建的“核心”项目。我想使用这个版本号作为我在 pom.xml 中的项目版本号和我的 jar 被部署到 nexus(即 core-3.1.jar 或 core-4.0.jar)的版本号。

编辑 2:
我走得更远了。我只是使用我在 jenkins 中设置的版本参数作为参数化构建部分中的参数作为 pom 文件中项目的版本号。 Maven 警告不要这样做,但它有效。但是,我所有依赖于“core”的项目现在也需要指定“${myNewVersion}”作为依赖版本。

所以我尝试再次使用 versions-maven-plugin 来设置/覆盖 pom 文件中的版本,就像我上面所说的那样。但是,现在我在使用 Maven 部署时收到“拒绝访问”错误。如果我删除“versions:set -DnewVersion=${myNewVersion} versions:commit”并只使用“deploy”,它就可以工作。任何线索如何解决这个问题?

最佳答案

在 pom.xml 中将版本设置为变量,如下所示:

<version>${version}</version>

然后运行maven
mvn deploy -Dversion=${myNewVersion}

关于Maven 部署忽略由 maven-versions 插件设置的项目版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11565548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com