Maven部署忽略Maven版本插件设置的项目版本

Maven部署忽略Maven版本插件设置的项目版本,maven,parameters,jenkins,nexus,Maven,Parameters,Jenkins,Nexus,我有一个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中对

我有一个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中项目的版本号,以及部署到nexus的jar的版本号(即core-3.1.jar或core-4.0.jar)

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


因此,我尝试再次使用版本maven插件来设置/覆盖pom文件中的版本,正如我前面所述。但是,现在我在使用maven deploy时遇到了一个“拒绝访问”错误。如果我删除“versions:set-DnewVersion=${myNewVersion}versions:commit”并只使用“deploy”,它就会工作。有没有解决这个问题的线索?

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

<version>${version}</version>

对于任何有同样问题的人,我也有同样的问题,这与
版本
插件和使用插件有关。版本更改未传播到未将其父项目设置为聚合器pom的子项目

这可以通过
版本:set
的范围来解决,例如:

versions:set -DgroupId=com.company.* -DartifactId=* -DnewVersion=${myNewVersion} versions:commit deploy

为什么不使用发布插件呢?AFAIK versions:commit并不真正提交给SCM这可以通过release:commit来完成……正如@khmarbaise所建议的,尝试M2_发布插件。它将自动化POM版本控制,并负责SCM标记/标记:我不想标记我的SCM(SVN),我想确保mvn:deploy目标使用我在jenkins构建作业中指定的版本号进行部署。我不知道如何使用maven发布插件实现这一点。我对它做了一些尝试,但到目前为止还没有任何有用的结果。@HombreFab这里有什么解决方案吗?我也面临同样的问题。。。
versions:set -DgroupId=com.company.* -DartifactId=* -DnewVersion=${myNewVersion} versions:commit deploy