假设我有一个pom文件,
<version>14.4.1-SNAPSHOT</version>
定义要构建的项目的版本。该值由我们的构建系统(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>
理想情况下,我很乐意拥有像
这样的东西<changeLogFile>src/main/resources/${releaseVersion}/changeLog.xml</changeLogFile>
但是如何从${releaseVersion}
自动计算出<version>14.4.1-SNAPSHOT</version>
(= 14.4)?
在这种情况下,它绝对是自动化的,我们没有任何手动流程。
是否有任何表达式 - 我可以在pom文件中使用哪种语言,它可以解析字符串14.4.1-SNAPSHOT
并从中生成14.4
?
答案 0 :(得分:5)
你可以尝试使用parse-version的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>