Author: trygvis Date: Mon Aug 15 09:46:12 2005 New Revision: 232833 URL: http://svn.apache.org/viewcvs?rev=232833&view=rev Log: Fixing MNG-623: "Improve the exclusion / inclusion of a dependency inside the ear" Committing on behalf of Stephane Nicoll. Provides two new flags to customize ear modules:
* excluded ; if set the module is not bundle in the EAR file * library ; if set the java module is considered as a 3rd party library and no entry is generated in the application.xml The patch also update the documentation. Modified: maven/components/trunk/maven-plugins/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/AbstractEarModule.java maven/components/trunk/maven-plugins/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/AbstractEarMojo.java maven/components/trunk/maven-plugins/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/EarModule.java maven/components/trunk/maven-plugins/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/JavaModule.java maven/components/trunk/maven-plugins/maven-ear-plugin/src/site/apt/configuration-examples.apt Modified: maven/components/trunk/maven-plugins/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/AbstractEarModule.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/AbstractEarModule.java?rev=232833&r1=232832&r2=232833&view=diff ============================================================================== --- maven/components/trunk/maven-plugins/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/AbstractEarModule.java (original) +++ maven/components/trunk/maven-plugins/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/AbstractEarModule.java Mon Aug 15 09:46:12 2005 @@ -47,6 +47,8 @@ private String bundleFileName; + private Boolean excluded = Boolean.FALSE; + /** * Empty constructor to be used when the module * is built based on the configuration. @@ -177,6 +179,16 @@ bundleFileName = artifact.getFile().getName(); } return bundleFileName; + } + + /** + * Specify whether this module should be excluded or not. + * + * @return true if this module should be skipped, false otherwise + */ + public boolean isExcluded() + { + return excluded.booleanValue(); } public String toString() Modified: maven/components/trunk/maven-plugins/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/AbstractEarMojo.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/AbstractEarMojo.java?rev=232833&r1=232832&r2=232833&view=diff ============================================================================== --- maven/components/trunk/maven-plugins/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/AbstractEarMojo.java (original) +++ maven/components/trunk/maven-plugins/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/AbstractEarMojo.java Mon Aug 15 09:46:12 2005 @@ -23,7 +23,6 @@ import java.io.File; import java.util.ArrayList; -import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Set; @@ -66,6 +65,8 @@ private List earModules; + private List allModules; + private File buildDir; public void execute() @@ -73,9 +74,10 @@ { getLog().debug( "Resolving ear modules ..." ); + allModules = new ArrayList(); + if ( modules != null && modules.length > 0 ) { - // Let's validate user-defined modules EarModule module = null; try @@ -85,17 +87,13 @@ module = (EarModule) modules[i]; getLog().debug( "Resolving ear module[" + module + "]" ); module.resolveArtifact( project.getArtifacts() ); + allModules.add( module ); } } catch ( EarPluginException e ) { throw new MojoExecutionException( "Failed to initialize ear modules", e ); } - earModules = new ArrayList( Arrays.asList( modules ) ); - } - else - { - earModules = new ArrayList(); } // Let's add other modules @@ -106,12 +104,26 @@ // Artifact is not yet registered and it has neither test, nor a // provided scope - if ( !isArtifactRegistered( artifact, earModules ) && - !Artifact.SCOPE_TEST.equals( artifact.getScope() ) && - !Artifact.SCOPE_PROVIDED.equals( artifact.getScope() ) ) + if ( !isArtifactRegistered( artifact, allModules ) && !Artifact.SCOPE_TEST.equals( artifact.getScope() ) && + !Artifact.SCOPE_PROVIDED.equals( artifact.getScope() ) ) { EarModule module = EarModuleFactory.newEarModule( artifact ); - earModules.add( module ); + allModules.add( module ); + } + } + + // Now we have everything let's built modules which have not been excluded + earModules = new ArrayList(); + for ( Iterator iter = allModules.iterator(); iter.hasNext(); ) + { + EarModule earModule = (EarModule) iter.next(); + if ( earModule.isExcluded() ) + { + getLog().debug( "Skipping ear module[" + earModule + "]" ); + } + else + { + earModules.add( earModule ); } } Modified: maven/components/trunk/maven-plugins/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/EarModule.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/EarModule.java?rev=232833&r1=232832&r2=232833&view=diff ============================================================================== --- maven/components/trunk/maven-plugins/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/EarModule.java (original) +++ maven/components/trunk/maven-plugins/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/EarModule.java Mon Aug 15 09:46:12 2005 @@ -49,6 +49,13 @@ public String getUri(); /** + * Specify whether this module should be excluded or not. + * + * @return true if this module should be skipped, false otherwise + */ + public boolean isExcluded(); + + /** * Appends the <tt>XML</tt> representation of this module. * * @param writer the writer to use Modified: maven/components/trunk/maven-plugins/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/JavaModule.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/JavaModule.java?rev=232833&r1=232832&r2=232833&view=diff ============================================================================== --- maven/components/trunk/maven-plugins/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/JavaModule.java (original) +++ maven/components/trunk/maven-plugins/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/JavaModule.java Mon Aug 15 09:46:12 2005 @@ -30,6 +30,8 @@ { protected static final String JAVA_MODULE = "java"; + private Boolean library = Boolean.FALSE; + public JavaModule() { } @@ -41,15 +43,32 @@ public void appendModule( XMLWriter writer, String version ) { - writer.startElement( MODULE_ELEMENT ); - writer.startElement( JAVA_MODULE ); - writer.writeText( getUri() ); - writer.endElement(); - writer.endElement(); + // Generates an entry in the application.xml only if this + // module is not a library + if (!isLibrary()) { + writer.startElement( MODULE_ELEMENT ); + writer.startElement( JAVA_MODULE ); + writer.writeText( getUri() ); + writer.endElement(); + writer.endElement(); + } } protected String getType() { return "jar"; + } + + /** + * Specify whether this Java module is a third party library or not. + * <p/> + * If <tt>true</tt>, the module will not be included in the generated + * <tt>application.xml</tt>. + * + * @return true if the module is a third party library, false otherwise + */ + public boolean isLibrary() + { + return library.booleanValue(); } } Modified: maven/components/trunk/maven-plugins/maven-ear-plugin/src/site/apt/configuration-examples.apt URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-ear-plugin/src/site/apt/configuration-examples.apt?rev=232833&r1=232832&r2=232833&view=diff ============================================================================== --- maven/components/trunk/maven-plugins/maven-ear-plugin/src/site/apt/configuration-examples.apt (original) +++ maven/components/trunk/maven-plugins/maven-ear-plugin/src/site/apt/configuration-examples.apt Mon Aug 15 09:46:12 2005 @@ -3,7 +3,7 @@ --- Stéphane Nicoll --- - 31-Jul-2005 + 15-Aug-2005 --- Introduction @@ -22,6 +22,12 @@ * uri: the complete path in the EAR structure for the artifact + Also, a dependency might be excluded from the generated EAR file by specifying the + excluded flag. + + Finally, third party libraries are handled by setting the library flag. If this flag + is set, the module is not included in the generated application.xml + Customizing the context root The sample below shows how to customize the context root of an artifact to be placed @@ -117,6 +123,59 @@ <groupId>artifactGroupId</groupId> <artifactId>artifactId</artifactId> <uri>APP-INF/lib/anotherName-1.2.3.jar</uri> + </javaModule> + </modules> + </configuration> + </plugin> + </plugins> + </build> ++--------- + +Excluding a module + + If for some reason a dependency which is declared in the pom of the project needs to be + excluded, the excluded flag could be used as follows: + ++-------- + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-ear-plugin</artifactId> + <configuration> + [...] + <modules> + <javaModule> + <groupId>artifactGroupId</groupId> + <artifactId>artifactId</artifactId> + <excluded>true</excluded> + </javaModule> + </modules> + </configuration> + </plugin> + </plugins> + </build> ++--------- + +Declaring a module as a third party library + + If third party libraries need to be included in an EAR file, the 'library' flag could be + used. Note that no entry in the application.xml will be created for such module. This + flag works only for java modules. + ++-------- + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-ear-plugin</artifactId> + <configuration> + [...] + <modules> + <javaModule> + <groupId>artifactGroupId</groupId> + <artifactId>artifactId</artifactId> + <library>true</library> </javaModule> </modules> </configuration> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]