Maven,自动化版本更改

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>

假设我有一个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>
        <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有个任务,手动/定期触发。没关系。我想避免在发布过程中更改这个小插件的版本…非常感谢,这就是我想要的。。。在发布问题之前,可能需要提高我的搜索技能:)非常感谢,这就是我一直在寻找的。。。在发布问题之前,可能需要提高我的搜索技能:)