Index: src/main/java/org/apache/maven/plugin/ear/EjbModule.java =================================================================== --- src/main/java/org/apache/maven/plugin/ear/EjbModule.java (revision 635262) +++ src/main/java/org/apache/maven/plugin/ear/EjbModule.java Sun Mar 09 10:57:57 CDT 2008 @@ -44,7 +44,7 @@ public void appendModule( XMLWriter writer, String version ) { - writer.startElement( MODULE_ELEMENT ); + appendModuleElement(writer); writer.startElement( EJB_MODULE ); writer.writeText( getUri() ); writer.endElement(); Index: src/main/java/org/apache/maven/plugin/ear/WebModule.java =================================================================== --- src/main/java/org/apache/maven/plugin/ear/WebModule.java (revision 635262) +++ src/main/java/org/apache/maven/plugin/ear/WebModule.java Sun Mar 09 10:55:43 CDT 2008 @@ -54,7 +54,7 @@ public void appendModule( XMLWriter writer, String version ) { - writer.startElement( MODULE_ELEMENT ); + appendModuleElement(writer); writer.startElement( WEB_MODULE ); writer.startElement( WEB_URI_FIELD ); writer.writeText( getUri() ); Index: src/main/java/org/apache/maven/plugin/ear/JarModule.java =================================================================== --- src/main/java/org/apache/maven/plugin/ear/JarModule.java (revision 635262) +++ src/main/java/org/apache/maven/plugin/ear/JarModule.java Sun Mar 09 10:58:44 CDT 2008 @@ -62,7 +62,7 @@ // includeInApplicationXml is set if ( includeInApplicationXml.booleanValue() ) { - writer.startElement( MODULE_ELEMENT ); + appendModuleElement(writer); writer.startElement( JAVA_MODULE ); writer.writeText( getUri() ); writer.endElement(); Index: src/main/java/org/apache/maven/plugin/ear/AbstractEarModule.java =================================================================== --- src/main/java/org/apache/maven/plugin/ear/AbstractEarModule.java (revision 635262) +++ src/main/java/org/apache/maven/plugin/ear/AbstractEarModule.java Sun Mar 09 11:24:53 CDT 2008 @@ -54,6 +54,8 @@ private String classifier; + private String moduleId; + protected String bundleDir; protected String bundleFileName; @@ -122,6 +124,11 @@ return artifact; } + public String getModuleId() + { + return moduleId; + } + public String getUri() { if ( uri == null ) @@ -245,6 +252,30 @@ } } + /** + * Append the module element, possibly including an id attribute, to the XML writer. + * + * @param writer the XML writer. + */ + protected void appendModuleElement(XMLWriter writer) { + writer.startElement( MODULE_ELEMENT ); + if (null != getModuleId()) + { + writer.addAttribute("id", getModuleId()); + } + else + { + Artifact artifact = getArtifact(); + String generatedId = artifact.getType().toUpperCase() + "_" + artifact.getGroupId() + "." + + artifact.getArtifactId(); + if (null != artifact.getClassifier() && artifact.getClassifier().trim().length() > 0) + { + generatedId += "-" + artifact.getClassifier().trim(); + } + writer.addAttribute("id", generatedId); + } + } + public String toString() { StringBuffer sb = new StringBuffer();