The Maven release plugin is very useful to make a release of our projects. A lot of things are done for us, like tagging the source code in our Source Control Management (SCM). During the process the project is build again with the following command:
mvn clean verify --no-plugin-updates. This will build the project again with all small changes already done by the Maven release plugin.
Now suppose we want to run the release plugin with a explicit profile from the command line. For example we execute
mvn release:prepare -Pproduction to create a release and get the result we can copy to a production environment. The release plugin will add our
-Pproduction to command to build the project. So the plugin executes
mvn clean verify --no-plugin-updates -Pproduction. Great! No worries it just happens.
But what happens with Java system properties we add to our commandline? Unfortunately they will not be included by the release plugin. For example if we invoke
mvn release:prepare -DmyProp=value, then the release plugin will only run
mvn clean verify --no-plugin-updates. But there is a way to pass our property along to the release plugin. We must use
-Darguments and then specify our extra arguments. In our example we have to run
mvn release:prepare -Darguments=-DmyProp=value and then the complete command from the release plugin will be
mvn clean verify --no-plugin-updates -DmyProp=value.