[ 
http://jira.codehaus.org/browse/MNG-3719?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=163906#action_163906
 ] 

Torben S. Giesselmann commented on MNG-3719:
--------------------------------------------

Since the patch won't make it into 2.0.10, the documentation at 
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
should be updated in the meantime. To avoid any confusion, it should be 
mentioned that there's a problem. Or remove the comment altogether or change it 
to "As of 2.0.11".

> [regression] plugin execution ordering no longer POM ordered in 2.0.9
> ---------------------------------------------------------------------
>
>                 Key: MNG-3719
>                 URL: http://jira.codehaus.org/browse/MNG-3719
>             Project: Maven 2
>          Issue Type: Bug
>          Components: POM
>    Affects Versions: 2.0.9, 2.0.10, 2.1.0-M1
>         Environment: Maven 2.0.9, java version "1.5.0_13" Java(TM) 2 Runtime 
> Environment, Standard Edition (build 1.5.0_13-b05-241) Java HotSpot(TM) 
> Client VM (build 1.5.0_13-120, mixed mode, sharing), OS X 10.4
>            Reporter: Gary S. Weaver
>            Priority: Critical
>             Fix For: 2.0.11, 2.1.0-M2
>
>         Attachments: MNG-3719-maven-project.patch, 
> plugin-execution-order-cant-be-defined-maven-2.0.9.tar.gz
>
>
> I extend my sincere apologies if there is a much easier way of doing this, 
> but so far I haven't found any.
> There should be some way to ensure order of plugin executions through 
> dependencies on other executions. See attached project for example, or see 
> below for the applicable example in a pom.xml. When plugins are defined in 
> pom.xml in the following manner to ensure correct execution order, they are 
> not executed sequentially and there is no way to indicate dependencies, as 
> would be expected (note- I'm not expecting that it interpret the "step 1...", 
> ..., "step 5..." IDs, I'm only suggesting that either the plugins be executed 
> in order that they are found in the XML (most intuitive) or that there be 
> some concept of priority/ordinal added, or even perhaps (this would be most 
> "ant-like") that plugin executions (and maybe even plugin goal executions) be 
> allowed to define prequisite execution IDs to be run (even if they are IDs 
> not defined in the pom, but maybe a parent pom, even though I don't need that 
> right now).
> I know that this could be problematic if a plugin execution from one 
> lifecycle phase depends on another from another lifecycle phase (and you 
> could get into circular references that way that would have to be recognized 
> during pom validation after loading/merging pom.xmls). However, not being 
> able to at the very least define order of execution of different (or the 
> same) plugin executions as noted below and in attached project makes it 
> difficult to chain plugin executions that depend on each other, thereby 
> reducing the practicality of the pom.xml and Maven 2.
> For example, these plugin executions cannot be ordered properly in Maven 
> 2.0.9, since there appears to be no way to indicate dependencies of one 
> execution on another:
> {code}
>     <build>
>         <plugins>
>             <plugin>
>                 <groupId>org.apache.maven.plugins</groupId>
>                 <artifactId>maven-compiler-plugin</artifactId>
>                 <configuration>
>                     <source>1.5</source>
>                     <target>1.5</target>
>                 </configuration>
>             </plugin>
>             <plugin>
>                 <!-- backup original source web.xml in preparation for 
> chaining of plugin modifications to it -->
>                 <groupId>org.apache.maven.plugins</groupId>
>                 <artifactId>maven-antrun-plugin</artifactId>
>                 <executions>
>                     <execution>
>                         <id>step 1 - backup-original-web.xml-from-src</id>
>                         <phase>generate-resources</phase>
>                         <goals>
>                             <goal>run</goal>
>                         </goals>
>                         <configuration>
>                             <tasks>
>                                 <mkdir dir="${pom.basedir}/target"/>
>                                 <mkdir dir="${pom.basedir}/target/tmpwebxml"/>
>                                 <copy 
> file="${pom.basedir}/src/main/webapp/WEB-INF/web.xml" 
> todir="${pom.basedir}/target/tmpwebxml/"/>
>                             </tasks>
>                         </configuration>
>                     </execution>
>                 </executions>
>             </plugin>
>             <plugin>
>                 <!-- this plugin converts to 
> ${basedir}/src/main/webapp/WEB-INF/web.xml to ${basedir}/target/jspweb.xml -->
>                 <groupId>org.codehaus.mojo</groupId>
>                 <artifactId>jspc-maven-plugin</artifactId>
>                 <executions>
>                     <execution>
>                         <id>step 2 - jspc</id>
>                         <phase>generate-resources</phase>
>                         <goals>
>                             <goal>compile</goal>
>                         </goals>
>                     </execution>
>                 </executions>
>                 <configuration>
>                     <injectString>&lt;!-- [INSERT JSPC FRAGMENT HERE] 
> --&gt;</injectString>
>                 </configuration>
>                 <dependencies>
>                     <!-- These dependencies are the portlet.tld is needed for 
> JSP compilation -->
>                     <dependency>
>                         <groupId>org.apache.pluto</groupId>
>                         <artifactId>pluto-taglib</artifactId>
>                         <version>1.1.3</version>
>                         <type>jar</type>
>                     </dependency>
>                     <dependency>
>                         <groupId>javax.portlet</groupId>
>                         <artifactId>portlet-api</artifactId>
>                         <version>1.0</version>
>                         <type>jar</type>
>                     </dependency>
>                     <dependency>
>                         <groupId>javax.servlet</groupId>
>                         <artifactId>jstl</artifactId>
>                         <version>1.1.2</version>
>                         <type>jar</type>
>                     </dependency>
>                     <dependency>
>                         <groupId>taglibs</groupId>
>                         <artifactId>standard</artifactId>
>                         <version>1.1.2</version>
>                         <type>jar</type>
>                     </dependency>
>                 </dependencies>
>             </plugin>
>             <plugin>
>                 <!-- copy modified web.xml file into source so it can be 
> worked on by the another plugin. do this before each chained change to 
> web.xml -->
>                 <groupId>org.apache.maven.plugins</groupId>
>                 <artifactId>maven-antrun-plugin</artifactId>
>                 <executions>
>                     <execution>
>                         <id>step 3 - 
> copy-jspc-web.xml-atop-web.xml-in-src</id>
>                         <phase>generate-resources</phase>
>                         <goals>
>                             <goal>run</goal>
>                         </goals>
>                         <configuration>
>                             <tasks>
>                                 <copy file="${pom.basedir}/target/jspweb.xml" 
> todir="${pom.basedir}/src/main/webapp/WEB-INF/"/>
>                             </tasks>
>                         </configuration>
>                     </execution>
>                 </executions>
>             </plugin>
>             <!-- bind 'pluto:assemble' goal to 'generate-resources' lifecycle 
> -->
>             <plugin>
>                 <!-- this plugin converts to 
> ${basedir}/src/main/webapp/WEB-INF/web.xml to 
> ${basedir}/target/pluto-resources/web.xml -->
>                 <groupId>org.apache.pluto</groupId>
>                 <artifactId>maven-pluto-plugin</artifactId>
>                 <version>${pluto.version}</version>
>                 <executions>
>                     <execution>
>                         <id>step 4 - pluto-modifications-to-web.xml</id>
>                         <phase>generate-resources</phase>
>                         <goals>
>                             <goal>assemble</goal>
>                         </goals>
>                     </execution>
>                 </executions>
>             </plugin>
>             
>             <plugin>
>                 <groupId>org.apache.maven.plugins</groupId>
>                 <artifactId>maven-war-plugin</artifactId>
>                 <configuration>
>                     <warName>NewsReaderPortlet</warName>
>                     
> <!--<webXml>${basedir}/src/main/webapp/WEB-INF/web.xml</webXml>-->
>                     <!--<webXml>${basedir}/target/jspweb.xml</webXml>-->
>                     <webXml>${basedir}/target/pluto-resources/web.xml</webXml>
>                 </configuration>
>                 <dependencies>
>                     <dependency>
>                         <groupId>org.apache.pluto</groupId>
>                         <artifactId>pluto-util</artifactId>
>                         <version>${pluto.version}</version>
>                         <scope>provided</scope>
>                     </dependency>
>                 </dependencies>
>             </plugin>
>             
>             <plugin>
>                 <!-- restore original web.xml file back into source after 
> "chained" plugin modifications are complete -->
>                 <groupId>org.apache.maven.plugins</groupId>
>                 <artifactId>maven-antrun-plugin</artifactId>
>                 <executions>
>                     <execution>
>                         <id>step 5 - restore-web.xml-to-src</id>
>                         <phase>generate-resources</phase>
>                         <goals>
>                             <goal>run</goal>
>                         </goals>
>                         <configuration>
>                             <tasks>
>                                 <copy 
> file="${pom.basedir}/target/tmpwebxml/web.xml" 
> todir="${pom.basedir}/src/main/webapp/WEB-INF/"/>
>                             </tasks>
>                         </configuration>
>                     </execution>
>                 </executions>
>             </plugin>            
>         </plugins>
>     </build>
> {code}

-- 
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

        

Reply via email to