我有一个带有以下GAV的pom
<groupId>com.company.services</groupId>
<artifactId>test-branch-2</artifactId>
<version>1.0.21-SNAPSHOT</version>
我想在批处理模式下使用maven删除-SNAPSHOT
,所以我可以使用Jenkins来完成,而不必手动指定任何内容。
我查看了版本的文档:set但是所有选项都为我提供了一个交互式提示,并要求我输入该版本的名称。
我更喜欢版本插件,而不是发布插件。
答案 0 :(得分:32)
从版本Maven插件版本2.10开始,您只需执行以下操作:
blob.Metadata["fileLoadId"] = "5";
答案 1 :(得分:10)
如果你真的不想使用Maven Release Plugin(无论出于何种原因),这就是我如何成功地以标准方式从maven POM中删除SNAPSHOT后缀(作为分类器)(是,没有脚本,没有自定义maven插件。)
鉴于以下简介:
<profile>
<id>drop-snapshot</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.11</version>
<executions>
<execution>
<id>parse-version</id>
<phase>validate</phase>
<goals>
<goal>parse-version</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>set-version</id>
<phase>validate</phase>
<goals>
<goal>set</goal>
</goals>
<configuration>
<newVersion>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}</newVersion>
</configuration>
</execution>
<execution>
<id>upgrade-pom</id>
<phase>validate</phase>
<goals>
<goal>commit</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
只需执行:mvn validate -Pdrop-snapshot
示例pom的版本从0.0.1-SNAPSHOT
传递到0.0.1
。
它是如何运作的:
build-helper-maven-plugin
,parse-version
目标将解析当前版本的POM并将其设置为一组默认parsedVersion
作为前缀的majorVersion
属性,minorVersion
,incrementalVersion
作为后缀(查看文档,您还将拥有classifier
和buildNumber
)。因此,在执行之后,我们可以在POM中使用${parsedVersion.majorVersion}
之类的属性,等等。versions-maven-plugin
,set
目标将使用这些属性构建您真正想要的新版本(在这种情况下,删除SNAPSHOT,因为我们排除了${parsedVersion.classifier}
属性)。 versions-maven-plugin
,commit
目标会使这些更改生效。答案 2 :(得分:3)
将以下内容添加到您的POM中:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.11</version>
<configuration>
<name>newVersion</name>
<value>${project.version}</value>
<regex>-SNAPSHOT</regex>
<failIfNoMatch>false</failIfNoMatch>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>
您现在可以删除项目版本的-SNAPSHOT
部分:
mvn build-helper:regex-property versions:set -N
-N
告诉Maven只处理根项目,以防你在POM中定义了模块。这不是严格必要的,但可以防止build-helper
插件不必要地运行子模块。 versions
插件在任何情况下都只在根项目上运行,并自动遍历所有模块。请考虑使用reactorModuleConvergence
插件的maven-enforcer
规则来确保正确处理多模块项目。
您可以运行mvn versions:commit
来删除versions:set
生成的备份POM。或者,您可以将<generateBackupPoms>false</generateBackupPoms>
添加到versions
插件的配置中。
答案 3 :(得分:3)
类似于A_Di-Matteo使用build-helper
的方法,但不需要额外的插件配置:
mvn build-helper:parse-version versions:set \
-DnewVersion=\${parsedVersion.majorVersion} \
.\${parsedVersion.minorVersion} \
.\${parsedVersion.incrementalVersion \
.\${parsedVersion.buildNumber} \
versions:commit
这会将1.0.0.0-SNAPSHOT
替换为1.0.0.0
中的pom.xml
。