You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Danilo Eiji Seki (JIRA)" <ji...@codehaus.org> on 2008/02/12 21:24:31 UTC

[jira] Commented: (MNG-1994) Execution order of child plugins is arbitrary if inheritance is involved

    [ http://jira.codehaus.org/browse/MNG-1994?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_123442 ] 

Danilo Eiji Seki commented on MNG-1994:
---------------------------------------

I noticed something strange and made a test. I suspected plugins/reports were being executed in *alphabetic order* (first by groupId, then by artifactId) and so they are!

For example, I have a problem generating QALab reports in child projects, because QALab plugin was always executed before the reports that generate data. Then I noticed the reports were generated *almost* in the order I specify them (I use the above alphabetic order, expept for the QALab plugin, that is the last one). Then I imagined that maybe that happens because all my reports are from {{org.*}} groups while QALab belongs to {{net.*}}.

I tested it by creating a dummy plugin by renaming the groupId of a QALab report plugin to {{zzz.net.objectlab}} and deploying it to my local repository. Then I changed my root dependency to this new one and magic, *IT WORKS*.

I suspect someone is using a sorted collection (tree set, etc). Some display-beautifuly-list is messing things up.

> Execution order of child plugins is arbitrary if inheritance is involved
> ------------------------------------------------------------------------
>
>                 Key: MNG-1994
>                 URL: http://jira.codehaus.org/browse/MNG-1994
>             Project: Maven 2
>          Issue Type: Bug
>          Components: Inheritance and Interpolation
>    Affects Versions: 2.0.1
>            Reporter: John Didion
>            Priority: Critical
>             Fix For: 2.1
>
>         Attachments: mergePluginLists.txt
>
>
> This is related to MNG-1499, but different, and, in my opinion, equally important. It makes sense that the order of plugin execution should be the same as it appears in the POM. For example, I have two plugins: one that generates a batch file and one that executes it. These plugins must run in order or the build will fail. However, the current implementation of ModelUtils.mergePluginLists does not respect the order of child plugins.
> There is also a seperate bug in that the assembledPlugins map is being checked for the presence of child plugins before adding them to the mergedPlugins list, but nothing is ever added to assembledPlugins. So if a plugin exists in a parent and a child, it will end up appearing twice in the child's plugin list.
> I have re-written this method to fix both these problems. See attached.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira