maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Brett Porter (JIRA)" <j...@codehaus.org>
Subject [jira] Commented: (MNG-3719) [regression] plugin execution ordering no longer POM ordered in 2.0.9
Date Fri, 06 Feb 2009 10:42:19 GMT

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

Brett Porter commented on MNG-3719:
-----------------------------------

I noted that this is only an issue when there is more than one declaration of a particular
plugin.

Since MNG-2145, multiple declarations are grouped together as if there were executions in
one plugin. This patch simply sorts those executions correctly.

I think the original poster wanted the old functionality back where plugins could be declared
multiple times and run in order - however I'm not prepared to undo that on 2.0.x.

I've applied the patch to resolve the issue.


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

        

Mime
View raw message