Hom*_*Fab 8 parameters nexus maven jenkins
我有一个Maven项目"核心".在项目的pom.xml中,版本为0.1.我在Jenkins中使用参数化构建并设置文本参数myNewVersion = 3.1.我还设置了以下maven目标:
versions:set -DnewVersion=${myNewVersion} versions:commit deploy
Run Code Online (Sandbox Code Playgroud)
在构建时,maven将pom.xml中的版本正确更新为"3.1".但是,maven部署任务将我的项目部署为"core-0.1",版本仍为0.1.我的Nexus中相应的0.1 dir中包含的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中设置的version参数作为参数化构建部分中的参数作为pom文件中项目的版本号.Maven警告这样做,但它确实有效.但是,依赖于"核心"的所有项目现在都需要指定"$ {myNewVersion}"作为依赖版本.
所以我尝试再次使用versions-maven-plugin来设置/覆盖pom文件中的版本,就像我上面所说的那样.但是,现在使用maven deploy时出现"拒绝访问"错误.如果我删除"版本:set -DnewVersion = $ {myNewVersion}版本:commit"并只使用"deploy",它就可以了.有任何线索如何解决这个问题?
在 pom.xml 中将版本设置为变量,如下所示:
<version>${version}</version>
Run Code Online (Sandbox Code Playgroud)
然后运行maven
mvn deploy -Dversion=${myNewVersion}
Run Code Online (Sandbox Code Playgroud)