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

        

Reply via email to