Jeffrey Hagelberg created MNG-5426:
--------------------------------------
Summary: plugin configuration using alias is ignored for array
types
Key: MNG-5426
URL: https://jira.codehaus.org/browse/MNG-5426
Project: Maven 2 & 3
Issue Type: Bug
Components: Inheritance and Interpolation
Affects Versions: 2.0.10
Environment: Windows XP
Reporter: Jeffrey Hagelberg
In our pom.xml, we are configuration a plugin using the alias rather than the
plugin parameter name. The configuration we are using is something like:
<configuration>
<models>
<model>
<groupId>com.ibm.mmi.models</groupId>
<artifactId>mmi_compiled_archive</artifactId>
<version>${project.version}</version>
</model>
</models>
</configuration>
This is configuring the following plugin parameter in our Mojo:
/**
*
* @parameter alias="models"
* @required
*/
private Model[] models_;
When we run our build it fails with:
[INFO] One or more required plugin parameters are invalid/missing for
'xmeta-installer:deploy-models'
[0] Inside the definition for plugin 'xmeta-installer-plugin' specify the
following:
<configuration>
...
<models_>VALUE</models_>
</configuration>
-OR-
<configuration>
...
<models>VALUE</models>
</configuration>
This happens despite the fact that the "models" configuration element is
present.
I spent some time in a debugger trying to figure out what was going on. I
stepped through the logic in DefaultPluginManager.mergeMojoConfiguration and
DefaultPluginManager.buildTopDownMergedConfiguration. What I see is that
in "fromPom" maven is implicitly adding an <models_/> tag to the configuration
in the pom.xml and treating that as the dominant configuration. The logic is
merging this tag with the real <models/> tag in the plugin configuration, using
that as the "recessive" value. The merge logic only looks at the child
elements in the dominant configuration. In this case, there are none, so the
merged configuration does not have the configuraition that was put into the
pom.xml.
Here is what I see in the debugger:
pomConfig [ at DefaultPluginManager:1199 ]
<configuration>
<models>
<model>
<groupId>com.ibm.mmi.models</groupId>
<artifactId>mmi_compiled_archive</artifactId>
<version>9.2-SNAPSHOT</version>
</model>
</models>
<models_/>
</configuration>
dominant parameter seen in buildTopDownMergedConfiguration:
<models_>
</models_>
recessive parameter seen in buildTopDownMergedConfiguration:
<models>
<model>
<groupId>com.ibm.mmi.models</groupId>
<artifactId>mmi_compiled_archive</artifactId>
<version>9.2-SNAPSHOT</version>
</model>
</models>
result of buildTopDownMergedConfiguration:
<models_>
</models_>
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira