我有一个 Maven 项目“核心”。在项目的 pom.xml 中,版本为 0.1。我在 Jenkins 中使用参数化构建并设置文本参数 myNewVersion=3.1。我还设定了以下 Maven 目标:
versions:set -DnewVersion=${myNewVersion} versions:commit deploy
构建时,maven 将 pom.xml 中的版本正确更新为“3.1”。然而,maven 部署任务将我的项目部署为“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 签出相同的项目代码,但将不同的版本参数传递给正在构建的“核心”项目。我想在 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”,它就可以工作。任何线索如何解决这个问题?