mojohaus / properties-maven-plugin

The Properties Maven Plugin

Home Page:https://www.mojohaus.org/properties-maven-plugin/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Hope to add SetProjectPropertiesMojo

loeveol opened this issue · comments

I use properties-maven-plugin to load the configuration file through ReadPropertiesMojo in the pom to skip some plugins, but I need to use SetSystemPropertiesMojo to change the value of the property in the subproject without skipping.
I found that ReadPropertiesMojo writes properties to project.setProperties, but SetSystemPropertiesMojo writes properties to System.setProperties.
This leads to <skip>${xxxx}</skip> not being able to get properties correctly in the pom of the subproject.

So after verification, I wonder if the following Mojo can make this process more reasonable:
(My English is not good, the above is translated by machine, please understand)

@Mojo( name = "set-project-properties", defaultPhase = LifecyclePhase.INITIALIZE, threadSafe = true )
public class SetProjectPropertiesMojo    extends AbstractMojo
{
    @Parameter( defaultValue = "${project}", readonly = true, required = true )
    private MavenProject project;
   
    @Parameter( required = true )
    private Properties properties;

    public void execute()
    {
        if ( properties.isEmpty() )
        {
            getLog().debug( "No project properties found" );

            return;
        }

        getLog().debug( "Setting project properties:" );

        Properties projectProperties = project.getProperties();

        for ( Enumeration<?> n = projectProperties.propertyNames(); n.hasMoreElements(); )
        {
            String k = (String) n.nextElement();

        }

        for ( Enumeration<?> propertyNames = properties.propertyNames(); propertyNames.hasMoreElements(); )
        {
            String propertyName = propertyNames.nextElement().toString();
            String propertyValue = properties.getProperty( propertyName );

            getLog().debug( "- " + propertyName + " = " + propertyValue );

            projectProperties.setProperty( propertyName, propertyValue );
        }
        int count = properties.size();

        getLog().info( "Set " + count + " project " + ( count > 1 ? "properties" : "property" ));  
    }
}