[
https://issues.apache.org/jira/browse/MNG-5539?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Christian Schulte closed MNG-5539.
----------------------------------
Resolution: Unresolved
> Profile plugin execution order is not preserved when merging into default
> PluginContainer
> -----------------------------------------------------------------------------------------
>
> Key: MNG-5539
> URL: https://issues.apache.org/jira/browse/MNG-5539
> Project: Maven
> Issue Type: Bug
> Components: Plugins and Lifecycle, POM, Profiles
> Affects Versions: 3.0.5, 3.1.0
> Reporter: David Eckel
> Priority: Minor
> Attachments: mng-5539.zip
>
>
> The order of execution of plugins within a profile unexpectedly depends upon
> the order of plugin definitions outside of the profile if the profile
> references those same plugins, even if they do not specify executions in the
> same phase. In the following example pom snippet, when run with 'mvn
> validate', 'plugin-B-in-profile' will execute first, then
> 'plugin-A-in-profile', when the opposite execution - the order in which they
> were defined - was desired.
> {code:xml}
> <build>
> <plugins>
> <!-- if you swap the order of these two plugins or remove one, the
> order of the profile plugin execution will change -->
> <plugin>
> <artifactId>maven-jar-plugin</artifactId>
> </plugin>
> <plugin>
> <artifactId>maven-antrun-plugin</artifactId>
> </plugin>
> </plugins>
> </build>
> <profiles>
> <profile>
> <activation>
> <activeByDefault>true</activeByDefault>
> </activation>
> <build>
> <plugins>
> <plugin>
> <artifactId>maven-antrun-plugin</artifactId>
> <executions>
> <execution>
> <id>plugin-A-in-profile</id>
> <phase>validate</phase>
> <goals>
> <goal>run</goal>
> </goals>
> </execution>
> </executions>
> </plugin>
> <plugin>
> <artifactId>maven-clean-plugin</artifactId>
> <executions>
> <execution>
> <id>plugin-B-in-profile</id>
> <phase>validate</phase>
> <goals>
> <goal>clean</goal>
> </goals>
> </execution>
> </executions>
> </plugin>
> <!-- Removing this plugin declaration will cause above
> plugins to run in a different order -->
> <plugin>
> <artifactId>maven-jar-plugin</artifactId>
> </plugin>
> </plugins>
> </build>
> </profile>
> </profiles>
> {code}
> See
> {{org.apache.maven.model.profile.DefaultProfileInjector$ProfileModelMerger.mergePluginContainer_Plugins()}}.
> It's unclear to me if this algorithm is intentional to aggregate all plugin
> definitions in the same way that you cannot declare the same plugin more than
> once in a given PluginContainer, or if profiles should always have their
> execution order respected, regardless of plugin definitions outside of the
> profile.
> This may be a similar or the same issue as MNG-5478, but it's unclear due to
> lack of information.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)