Hi,

I am facing an issue I really did not expect, where a plugins <configuration> 
parameters in the POM take precedence over CLI –Dparam=value parameter values.

My plugin takes a string parameter:
@Mojo(name = "showValue", requiresProject = true, aggregator = true, 
defaultPhase = LifecyclePhase.PACKAGE, threadSafe = true)
public class DemoMojo extends AbstractMojo {

    /**
     * The name of the property to print
     */
    @Parameter(property=“demoName”)
    private String demoName;

    public void execute() throws MojoExecutionException, MojoFailureException {
        if (StringUtils.isEmpty(demoName)) {
            getLog().info("demo-plugin: demoName variable was not given.");
        } else {
            getLog().info("demo-plugin: " + demoName);
        }
    }
}

So far this works as I expect:

<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd"; 
xmlns="http://maven.apache.org/POM/4.0.0";
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.danijoh2.project</groupId>
  <artifactId>sample</artifactId>
  <version>1.0.0-SNAPSHOT</version>
<build>
    <plugins>
      <plugin>
        <groupId>com.danijoh2</groupId>
        <artifactId>demo-plugin</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <executions>
          <execution>
            <id>demo</id>
            <goals>
              <goal>showValue</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

DANIJOH2-M-V0MA:Desktop danijoh2$ mvn clean install
[INFO] ------------------------------------------------------------------------
[INFO] Building sample 1.0.0-SNAPSHOT
...
[INFO] --- demo-plugin:1.0.0-SNAPSHOT:showValue (default-cli) @ sample ---
[INFO] demo-plugin: demoName variable was not given.

And if I pass the parameter I see it is accepted:
DANIJOH2-M-V0MA:Desktop danijoh2$ mvn clean install  –DdemoName=cliParam
[INFO] ------------------------------------------------------------------------
[INFO] Building sample 1.0.0-SNAPSHOT
...
[INFO] --- demo-plugin:1.0.0-SNAPSHOT:showValue (default-cli) @ sample ---
[INFO] demo-plugin: cliParam

However, if I specify the parameter in the POM, I no longer see the CLI value 
being used:

      <plugin>
        <groupId>com.danijoh2</groupId>
        <artifactId>demo-plugin</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <configuration>
          <demoName>pomParam</demoName>
        </configuration>
…
      </plugin>

DANIJOH2-M-V0MA:Desktop danijoh2$ mvn clean install  –DdemoName=cliParam
[INFO] ------------------------------------------------------------------------
[INFO] Building sample 1.0.0-SNAPSHOT
...
[INFO] --- demo-plugin:1.0.0-SNAPSHOT:showValue (default-cli) @ sample ---
[INFO] demo-plugin: pomParam

Shouldn’t the CLI parameter value override any value in the POM?

Thanks,
Daniel

Reply via email to