Maven,自动化版本更改
假设我有一个pom文件Maven,自动化版本更改,maven,build-automation,release-management,Maven,Build Automation,Release Management,假设我有一个pom文件 <version>14.4.1-SNAPSHOT</version> 14.4.1-SNAPSHOT 它定义了要生成的项目的版本。该值由我们的构建系统(jenkins)自动更新 稍后,在其中一个插件中,我需要有一个属性,它包含版本的前两个数字,因此对于14.4.1-SNAPSHOT值,它将是“14.4”,对于13.12.39-SNAPSHOT值,它将是“13.12” 目前,我们每月手动更新此值: <plugins>
<version>14.4.1-SNAPSHOT</version>
14.4.1-SNAPSHOT
它定义了要生成的项目的版本。该值由我们的构建系统(jenkins)自动更新
稍后,在其中一个插件中,我需要有一个属性,它包含版本的前两个数字,因此对于14.4.1-SNAPSHOT值,它将是“14.4”,对于13.12.39-SNAPSHOT值,它将是“13.12”
目前,我们每月手动更新此值:
<plugins>
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>2.0.1</version>
<executions>
<execution>
<id>default-cli</id>
<phase>process-resources</phase>
<configuration>
<changeLogFile>src/main/resources/14.4/changeLog.xml</changeLogFile>
org.liquibase
liquibase maven插件
2.0.1
默认cli
过程资源
src/main/resources/14.4/changeLog.xml
理想的情况下,我希望有类似的东西
<changeLogFile>src/main/resources/${releaseVersion}/changeLog.xml</changeLogFile>
src/main/resources/${releaseVersion}/changeLog.xml
但是如何从14.4.1-SNAPSHOT
自动计算出这个${releaseVersion}
(=14.4)
在这种情况下,它是完全自动化的,我们没有任何手动过程。
在pom文件中是否有我可以使用的任何类型的语言,可以解析字符串
14.4.1-SNAPSHOT
,并从中生成14.4
?您可以尝试使用mojo build helper和解析版本来实现此目的
[编辑]以下是我的示例pom.xml:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<webResources>
<resource>
<filtering>true</filtering>
<targetPath>WEB-INF</targetPath>
<directory>src/main/resources/${parsedVersion.majorVersion}.${parsedVersion.minorVersion}</directory>
</resource>
</webResources>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>validate</phase>
<id>parse-version</id>
<goals>
<goal>parse-version</goal>
</goals>
<configuration>
<propertyPrefix>parsedVersion</propertyPrefix>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>Major: ${parsedVersion.majorVersion}</echo>
<echo>Minor: ${parsedVersion.minorVersion}</echo>
<echo>Incremental: ${parsedVersion.incrementalVersion}</echo>
<echo>Qualifier: ${parsedVersion.qualifier}</echo>
<echo>BuildNumber: ${parsedVersion.buildNumber}</echo>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
org.apache.maven.plugins
maven战争插件
2.2
真的
WEB-INF
src/main/resources/${parsedVersion.majorVersion}.${parsedVersion.minorVersion}
org.codehaus.mojo
构建助手maven插件
1.8
验证
解析版本
解析版本
parsedVersion
org.apache.maven.plugins
maven antrun插件
1.1
验证
跑
Major:${parsedVersion.majorVersion}
次要:${parsedVersion.minorVersion}
增量:${parsedVersion.incrementalVersion}
限定符:${parsedVersion.Qualifier}
BuildNumber:${parsedVersion.BuildNumber}
您可以尝试使用解析版本的mojo build helper
[编辑]以下是我的示例pom.xml:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<webResources>
<resource>
<filtering>true</filtering>
<targetPath>WEB-INF</targetPath>
<directory>src/main/resources/${parsedVersion.majorVersion}.${parsedVersion.minorVersion}</directory>
</resource>
</webResources>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>validate</phase>
<id>parse-version</id>
<goals>
<goal>parse-version</goal>
</goals>
<configuration>
<propertyPrefix>parsedVersion</propertyPrefix>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>Major: ${parsedVersion.majorVersion}</echo>
<echo>Minor: ${parsedVersion.minorVersion}</echo>
<echo>Incremental: ${parsedVersion.incrementalVersion}</echo>
<echo>Qualifier: ${parsedVersion.qualifier}</echo>
<echo>BuildNumber: ${parsedVersion.buildNumber}</echo>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
org.apache.maven.plugins
maven战争插件
2.2
真的
WEB-INF
src/main/resources/${parsedVersion.majorVersion}.${parsedVersion.minorVersion}
org.codehaus.mojo
构建助手maven插件
1.8
验证
解析版本
解析版本
parsedVersion
org.apache.maven.plugins
maven antrun插件
1.1
验证
跑
Major:${parsedVersion.majorVersion}
次要:${parsedVersion.minorVersion}
增量:${parsedVersion.incrementalVersion}
限定符:${parsedVersion.Qualifier}
BuildNumber:${parsedVersion.BuildNumber}
您可以更改父pom吗?哦,您当前如何增加版本?通过maven release?@LordT是的,我想我可以,这取决于那里要改变什么。为什么?@LortT是的,我们在jenkins有个任务,手动/定期触发。没关系。我想避免在发布过程中更改这个小插件的版本。你能更改父pom吗?哦,你现在如何增加版本?通过maven release?@LordT是的,我想我可以,这取决于那里要改变什么。为什么?@LortT是的,我们在jenkins有个任务,手动/定期触发。没关系。我想避免在发布过程中更改这个小插件的版本…非常感谢,这就是我想要的。。。在发布问题之前,可能需要提高我的搜索技能:)非常感谢,这就是我一直在寻找的。。。在发布问题之前,可能需要提高我的搜索技能:)