PaquitoSoft PaquitoSoft - 13 days ago 4
Java Question

Set maven property from plugin

I've read some questions here about how to set a property (most of them talked about the version number for an application) from a maven plugin.
It seems there's no easy way of doing this and the best solution I found is to have a filter.properties file which is updated from the plugin and used by the main pom file to filter the desired resources.

I tried another solution after I read this from the Maven documentation (Maven filter plugin):


Variables can be included in your resources. These variables, denoted
by the ${...} delimiters, can come from the system properties, your
project properties, from your filter resources and from the command
line.


I found interesting that variabled can be read from system properties. So, I modified my plugin to set a system property like this:

System.setProperty("currentVersion", appCurrentVersion);


However, filtered resources don't seem to read this value.
Could anybody tell me what's wrong with this approach?

UPDATE: I'm running my plugin in the validate phase.

Thanks a lot.

Answer

Don't set it as System Property, set it as Maven Project property

// inject the project
/** @parameter default-value="${project}" */
private org.apache.maven.project.MavenProject project;

// and in execute(), use it:
project.getProperties().setProperty("currentVersion", appCurrentVersion);

See: