views:

646

answers:

2

When we release projects it is usually the same every time. Are there any arguments or properties that I can add to release:prepare that will allow for pattern releasing in batch mode?

Example:

What is the release version for "MyProject"? (company.jar.site:myproject) 0.0.1: : 
What is SCM release tag or label for "MyProject"? (company.jar.site:myproject) MyProject-0.0.1: : 
What is the new development version for "MyProject"? (company.jar.site:myproject) 0.0.2-SNAPSHOT: : 

It would be nice to do something like this:

mvn -B release:perform -DreleaseVersion:$nextMinorVersion$ or
mvn -B release:perform -DreleaseVersion:$nextPatchVersion$ or
mvn -B release:perform -Dtag:v$nextPatchVersion$ or
mvn -B release:perform -Dtag:v$nextPatchVersion$-someCustomNaming 

If something like this does not already exist, I will create a custom Mojo to do so.

Alternatively, during the prompts above we usually do default to the 1st question, 'v' + current version on the second, and next minor on the last. If we could modify these somehow, that would solve the immediate issue.

Thanks in advance.

+3  A: 
mvn -B release:prepare release:perform

-B is for batch mode, it will use the defaults it offers when in non-batch mode. Generally for X.Y.Z-SNAPSHOT, it does a release of X.Y.Z and sets the new snapshot to X.Y.(Z+1)-SNAPSHOT.

As with all things maven, you can fight this naming convention and have lots of headaches, or give in and decide your versions and labels are going to be the maven way and get lots for free. I fought it, and lost. Just one of the many ways that you have to give over completely to maven if you're going to use it.

I'm perfectly happy having done so, wanting to impose my own schemes usually isn't a good idea anyway.

caskey
The only trouble with this is that I usually want to alter the tag name offered. Because my parent artifactId is usually "foo-parent" and I want the tag to be foo-1.2.3 instead of foo-parent-1.2.3.
Dominic Mitchell
A: 

Partial answer, after your comment:

To change the tag name, use the -Dtag=xxx argument to release:prepare. See the release:prepare documentation for details.

Untested code warning

To do this in a fully automated way, you need to add a configuration entry to your pom.xml where you would set the tag name:

<maven-release-plugin>
   <configuration>
       <tag>parent-${releaseVersion}</tag>
   </configuration>
</maven-release-plugin>
Robert Munteanu