I am working on an initiative to auto increment the X.Y.Z
version during the build process. In this case we are not removing the SNAPSHOT
suffix (to make it a released version), rather increasing the minor part of the version:
X.Y.Z-SNAPSHOT
=>X.Y.Z+1-SNAPSHOT
- NOT
X.Y.Z-SNAPSHOT
=>X.Y.Z
I cannot use the maven release plugin since it is ONLY capable of cutting off SNAPSHOT
suffix to make it released versions. So, I ended up creating a custom script which has the logic to increment versions.
My question here is how can I best implement the following steps:
- Check out the
pom.xml
from perforce. - Run the custom script to increment version.
- Commit the
pom.xml
change if deployment was successful.
I created a maven profile autoversion
which partially meets the above needs. Maven first increments the version as part of generate resources phase. However, it ends up deploying the older version of the project.
mvn -Pautoversion clean deploy
<profile>
<id>autoversion</id>
<build>
<plugins>
<plugin>
<artifactId>exec-maven-plugin</artifactId>
<groupId>org.codehaus.mojo</groupId>
<executions>
<execution>
<id>Calculate version</id>
<phase>generate-resources</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>${basedir}/autoincrementversion.sh</executable>
<arguments>
<argument>-bdj</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<version>1.9</version>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>edit</goal>
<goal>checkin</goal>
</goals>
<configuration>
<username>jenkins</username>
<basedir>./</basedir>
<includes>pom.xml</includes>
<message>Auto increment pom version</message>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
[INFO] ------------------------------------------------------------------------
[INFO] Building project 99.22.8
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- versions-maven-plugin:1.3.1:set (default-cli) @ project ---
[INFO] Searching for local aggregator root...
[INFO] Local aggregation root: /opt/project/auto-increment-release
[INFO] Processing com.project
[INFO] Updating project com.project
[INFO] from version 99.22.8 to 99.22.9
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.135s
[INFO] Finished at: Wed Nov 05 23:15:13 PST 2014
[INFO] Final Memory: 11M/152M
[INFO] ------------------------------------------------------------------------
Any pointers to achieve the requirement is highly appreciated.