diff --git a/pom.xml b/pom.xml
index 8607f9c..1c16273 100644
--- a/pom.xml
+++ b/pom.xml
@@ -90,6 +90,7 @@
     <mavenCompilerPluginVersion>2.5.1</mavenCompilerPluginVersion>
     <mavenEjbPluginVersion>2.3</mavenEjbPluginVersion>
     <mavenRarPluginVersion>2.4</mavenRarPluginVersion>
+    <mavenJarPluginVersion>3.2.0</mavenJarPluginVersion>
     <jbossPackagingPluginVersion>2.2</jbossPackagingPluginVersion>
     <invoker.skip>false</invoker.skip>
     <invoker.install.skip>${invoker.skip}</invoker.install.skip>
@@ -290,6 +291,7 @@
                 <extraArtifact>org.apache.maven.plugins:maven-compiler-plugin:${mavenCompilerPluginVersion}:jar</extraArtifact>
                 <extraArtifact>org.apache.maven.plugins:maven-ejb-plugin:${mavenEjbPluginVersion}:jar</extraArtifact>
                 <extraArtifact>org.apache.maven.plugins:maven-rar-plugin:${mavenRarPluginVersion}:jar</extraArtifact>
+                <extraArtifact>org.apache.maven.plugins:maven-jar-plugin:${mavenJarPluginVersion}:jar</extraArtifact>
                 <extraArtifact>org.codehaus.mojo:jboss-packaging-maven-plugin:${jbossPackagingPluginVersion}:jar</extraArtifact>
               </extraArtifacts>
               <skipInstallation>${invoker.install.skip}</skipInstallation>
diff --git a/src/main/java/org/apache/maven/plugins/ear/AbstractEarModule.java b/src/main/java/org/apache/maven/plugins/ear/AbstractEarModule.java
index 2af06fb..bb64744 100644
--- a/src/main/java/org/apache/maven/plugins/ear/AbstractEarModule.java
+++ b/src/main/java/org/apache/maven/plugins/ear/AbstractEarModule.java
@@ -60,6 +60,8 @@
 
     private String artifactId;
 
+    protected String type;
+
     private String classifier;
 
     /**
@@ -123,6 +125,7 @@
         this.artifact = a;
         this.groupId = a.getGroupId();
         this.artifactId = a.getArtifactId();
+        this.type = a.getType();
         this.classifier = a.getClassifier();
         this.bundleDir = null;
     }
@@ -203,6 +206,14 @@
     }
 
     /**
+     * {@inheritDoc}
+     */
+    public String getType()
+    {
+        return type;
+    }
+
+    /**
      * Returns the artifact's groupId.
      * 
      * @return {@link #groupId}
diff --git a/src/main/java/org/apache/maven/plugins/ear/AcrModule.java b/src/main/java/org/apache/maven/plugins/ear/AcrModule.java
deleted file mode 100644
index 3342126..0000000
--- a/src/main/java/org/apache/maven/plugins/ear/AcrModule.java
+++ /dev/null
@@ -1,119 +0,0 @@
-package org.apache.maven.plugins.ear;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.plugin.MojoFailureException;
-import org.codehaus.plexus.util.xml.XMLWriter;
-
-import java.util.Set;
-
-/**
- * The {@link EarModule} implementation for an Acr Module.
- * 
- * @author <a href="mailto:khmarbaise@apache.org">Karl Heinz Marbaise</a>
- * @since 3.0.0
- */
-public class AcrModule
-    extends AbstractEarModule
-{
-    private Boolean includeInApplicationXml = Boolean.FALSE;
-
-    private static final String APP_CLIENT = "app-client";
-    
-    /**
-     * Create an instance.
-     */
-    public AcrModule()
-    {
-        super();
-    }
-
-    /**
-     * @param a {@link Artifact}
-     * @param defaultLibBundleDir The default library bundle directory.
-     * @param includeInApplicationXml Include the application xml or not.
-     */
-    public AcrModule( Artifact a, String defaultLibBundleDir, Boolean includeInApplicationXml )
-    {
-        super( a );
-        setLibBundleDir( defaultLibBundleDir );
-        this.includeInApplicationXml = includeInApplicationXml;
-
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void appendModule( XMLWriter writer, String version, Boolean generateId )
-    {
-        // Generates an entry in the application.xml only if
-        // includeInApplicationXml is set
-        if ( includeInApplicationXml )
-        {
-            startModuleElement( writer, generateId );
-            writer.startElement( APP_CLIENT );
-            writer.writeText( getUri() );
-            writer.endElement();
-
-            writeAltDeploymentDescriptor( writer, version );
-
-            writer.endElement();
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void resolveArtifact( Set<Artifact> artifacts )
-        throws EarPluginException, MojoFailureException
-    {
-        // Let's resolve the artifact
-        super.resolveArtifact( artifacts );
-
-        // If the defaultLibBundleDir is set and no bundle dir is
-        // set, set the default as bundle dir
-        setLibBundleDir( earExecutionContext.getDefaultLibBundleDir() );
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public String getType()
-    {
-        return APP_CLIENT;
-    }
-
-    private void setLibBundleDir( String defaultLibBundleDir )
-    {
-        if ( defaultLibBundleDir != null && bundleDir == null )
-        {
-            this.bundleDir = defaultLibBundleDir;
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public boolean changeManifestClasspath()
-    {
-        return false;
-    }
-}
diff --git a/src/main/java/org/apache/maven/plugins/ear/AppClientModule.java b/src/main/java/org/apache/maven/plugins/ear/AppClientModule.java
index 5c537b7..6ff9994 100644
--- a/src/main/java/org/apache/maven/plugins/ear/AppClientModule.java
+++ b/src/main/java/org/apache/maven/plugins/ear/AppClientModule.java
@@ -30,12 +30,17 @@
 public class AppClientModule
     extends AbstractEarModule
 {
+    /**
+     * Default type of the artifact of an application client module.
+     */
+    public static final String DEFAULT_ARTIFACT_TYPE = "app-client";
 
     /**
      * Create an instance.
      */
     public AppClientModule()
     {
+        this.type = DEFAULT_ARTIFACT_TYPE;
     }
 
     /**
@@ -60,12 +65,4 @@
 
         writer.endElement();
     }
-
-    /**
-     * @return The type of the module.
-     */
-    public String getType()
-    {
-        return "app-client";
-    }
 }
diff --git a/src/main/java/org/apache/maven/plugins/ear/EarModuleFactory.java b/src/main/java/org/apache/maven/plugins/ear/EarModuleFactory.java
index 161e6bc..f8a1ba9 100644
--- a/src/main/java/org/apache/maven/plugins/ear/EarModuleFactory.java
+++ b/src/main/java/org/apache/maven/plugins/ear/EarModuleFactory.java
@@ -34,12 +34,30 @@
  */
 public final class EarModuleFactory
 {
+    private static final String TEST_JAR_ARTIFACT_TYPE = "test-jar";
+    private static final String JBOSS_PAR_ARTIFACT_TYPE = "jboss-par";
+    private static final String JBOSS_SAR_ARTIFACT_TYPE = "jboss-sar";
+    private static final String JBOSS_HAR_ARTIFACT_TYPE = "jboss-har";
+
     /**
      * The list of artifact types.
      */
-    public static final List<String> STANDARD_ARTIFACT_TYPE =
-        Collections.unmodifiableList( Arrays.asList( "jar", "ejb", "par", "ejb-client", "app-client", "rar", "war",
-                                                     "sar", "wsr", "har" ) );
+    private static final List<String> STANDARD_ARTIFACT_TYPES =
+        Collections.unmodifiableList( Arrays.asList(
+            JarModule.DEFAULT_ARTIFACT_TYPE,
+            EjbModule.DEFAULT_ARTIFACT_TYPE,
+            ParModule.DEFAULT_ARTIFACT_TYPE,
+            EjbClientModule.DEFAULT_ARTIFACT_TYPE,
+            AppClientModule.DEFAULT_ARTIFACT_TYPE,
+            RarModule.DEFAULT_ARTIFACT_TYPE,
+            WebModule.DEFAULT_ARTIFACT_TYPE,
+            SarModule.DEFAULT_ARTIFACT_TYPE,
+            WsrModule.DEFAULT_ARTIFACT_TYPE,
+            HarModule.DEFAULT_ARTIFACT_TYPE,
+            TEST_JAR_ARTIFACT_TYPE,
+            JBOSS_PAR_ARTIFACT_TYPE,
+            JBOSS_SAR_ARTIFACT_TYPE,
+            JBOSS_HAR_ARTIFACT_TYPE ) );
 
     /**
      * Creates a new {@link EarModule} based on the specified {@link Artifact} and the specified execution
@@ -70,19 +88,20 @@
             throw new UnknownArtifactTypeException( e.getMessage() + " for " + artifact.getArtifactId() );
         }
 
-        if ( "jar".equals( artifactType ) )
+        if ( JarModule.DEFAULT_ARTIFACT_TYPE.equals( artifactType ) || TEST_JAR_ARTIFACT_TYPE.equals( artifactType ) )
         {
             return new JarModule( artifact, defaultLibBundleDir, includeInApplicationXml );
         }
-        else if ( "ejb".equals( artifactType ) )
+        else if ( EjbModule.DEFAULT_ARTIFACT_TYPE.equals( artifactType ) )
         {
             return new EjbModule( artifact );
         }
-        else if ( "par".equals( artifactType ) )
+        else if ( ParModule.DEFAULT_ARTIFACT_TYPE.equals( artifactType )
+            || JBOSS_PAR_ARTIFACT_TYPE.equals( artifactType ) )
         {
             return new ParModule( artifact );
         }
-        else if ( "ejb-client".equals( artifactType ) )
+        else if ( EjbClientModule.DEFAULT_ARTIFACT_TYPE.equals( artifactType ) )
         {
             // Somewhat weird way to tackle the problem described in MEAR-85
             if ( javaEEVersion.le( JavaEEVersion.ONE_DOT_FOUR ) )
@@ -94,27 +113,29 @@
                 return new EjbClientModule( artifact, defaultLibBundleDir );
             }
         }
-        else if ( "app-client".equals( artifactType ) )
+        else if ( AppClientModule.DEFAULT_ARTIFACT_TYPE.equals( artifactType ) )
         {
             return new AppClientModule( artifact );
         }
-        else if ( "rar".equals( artifactType ) )
+        else if ( RarModule.DEFAULT_ARTIFACT_TYPE.equals( artifactType ) )
         {
             return new RarModule( artifact );
         }
-        else if ( "war".equals( artifactType ) )
+        else if ( WebModule.DEFAULT_ARTIFACT_TYPE.equals( artifactType ) )
         {
             return new WebModule( artifact );
         }
-        else if ( "sar".equals( artifactType ) )
+        else if ( SarModule.DEFAULT_ARTIFACT_TYPE.equals( artifactType )
+            || JBOSS_SAR_ARTIFACT_TYPE.equals( artifactType ) )
         {
             return new SarModule( artifact );
         }
-        else if ( "wsr".equals( artifactType ) )
+        else if ( WsrModule.DEFAULT_ARTIFACT_TYPE.equals( artifactType ) )
         {
             return new WsrModule( artifact );
         }
-        else if ( "har".equals( artifactType ) )
+        else if ( HarModule.DEFAULT_ARTIFACT_TYPE.equals( artifactType )
+            || JBOSS_HAR_ARTIFACT_TYPE.equals( artifactType ) )
         {
             return new HarModule( artifact );
         }
@@ -131,7 +152,7 @@
      */
     public static List<String> getStandardArtifactTypes()
     {
-        return STANDARD_ARTIFACT_TYPE;
+        return STANDARD_ARTIFACT_TYPES;
     }
 
     /**
@@ -142,7 +163,7 @@
      */
     public static boolean isStandardArtifactType( final String type )
     {
-        return STANDARD_ARTIFACT_TYPE.contains( type );
+        return STANDARD_ARTIFACT_TYPES.contains( type );
     }
 
 }
diff --git a/src/main/java/org/apache/maven/plugins/ear/EarMojo.java b/src/main/java/org/apache/maven/plugins/ear/EarMojo.java
index 5a50db3..e0dc675 100644
--- a/src/main/java/org/apache/maven/plugins/ear/EarMojo.java
+++ b/src/main/java/org/apache/maven/plugins/ear/EarMojo.java
@@ -522,10 +522,10 @@
             unpackTypesList = Arrays.asList( unpackTypes.split( "," ) );
             for ( String type : unpackTypesList )
             {
-                if ( !EarModuleFactory.STANDARD_ARTIFACT_TYPE.contains( type ) )
+                if ( !EarModuleFactory.isStandardArtifactType( type ) )
                 {
                     throw new MojoExecutionException( "Invalid type [" + type + "] supported types are "
-                        + EarModuleFactory.STANDARD_ARTIFACT_TYPE );
+                        + EarModuleFactory.getStandardArtifactTypes() );
                 }
             }
             getLog().debug( "Initialized unpack types " + unpackTypesList );
diff --git a/src/main/java/org/apache/maven/plugins/ear/EjbClientModule.java b/src/main/java/org/apache/maven/plugins/ear/EjbClientModule.java
index 186f893..bd16ebc 100644
--- a/src/main/java/org/apache/maven/plugins/ear/EjbClientModule.java
+++ b/src/main/java/org/apache/maven/plugins/ear/EjbClientModule.java
@@ -29,13 +29,17 @@
 public class EjbClientModule
     extends JarModule
 {
+    /**
+     * Default type of the artifact of an ejb client module.
+     */
+    public static final String DEFAULT_ARTIFACT_TYPE = "ejb-client";
 
     /**
      * Create an instance.
      */
     public EjbClientModule()
     {
-        super();
+        this.type = DEFAULT_ARTIFACT_TYPE;
     }
 
     /**
@@ -46,12 +50,4 @@
     {
         super( a, defaultLibBundleDir, Boolean.FALSE );
     }
-
-    /**
-     * {@inheritDoc}
-     */
-    public String getType()
-    {
-        return "ejb-client";
-    }
 }
diff --git a/src/main/java/org/apache/maven/plugins/ear/EjbModule.java b/src/main/java/org/apache/maven/plugins/ear/EjbModule.java
index d74b62d..f9adb3c 100644
--- a/src/main/java/org/apache/maven/plugins/ear/EjbModule.java
+++ b/src/main/java/org/apache/maven/plugins/ear/EjbModule.java
@@ -30,6 +30,11 @@
 public class EjbModule
     extends AbstractEarModule
 {
+    /**
+     * Default type of the artifact of an EJB module.
+     */
+    public static final String DEFAULT_ARTIFACT_TYPE = "ejb";
+
     private static final String EJB_MODULE = "ejb";
 
     /**
@@ -37,6 +42,7 @@
      */
     public EjbModule()
     {
+        this.type = DEFAULT_ARTIFACT_TYPE;
     }
 
     /**
@@ -61,12 +67,4 @@
 
         writer.endElement();
     }
-
-    /**
-     * {@inheritDoc}
-     */
-    public String getType()
-    {
-        return EJB_MODULE;
-    }
 }
diff --git a/src/main/java/org/apache/maven/plugins/ear/HarModule.java b/src/main/java/org/apache/maven/plugins/ear/HarModule.java
index 0124e54..1d2198d 100644
--- a/src/main/java/org/apache/maven/plugins/ear/HarModule.java
+++ b/src/main/java/org/apache/maven/plugins/ear/HarModule.java
@@ -31,6 +31,11 @@
     extends AbstractEarModule
     implements JbossEarModule
 {
+    /**
+     * Default type of the artifact of a JBoss Hibernate archive.
+     */
+    public static final String DEFAULT_ARTIFACT_TYPE = "har";
+
     private static final String DEFAULT_LIB_DIRECTORY = "lib";
 
     /**
@@ -38,6 +43,7 @@
      */
     public HarModule()
     {
+        this.type = DEFAULT_ARTIFACT_TYPE;
         this.libDirectory = DEFAULT_LIB_DIRECTORY;
     }
 
@@ -71,12 +77,4 @@
         writer.endElement();
         writer.endElement();
     }
-
-    /**
-     * {@inheritDoc}
-     */
-    public String getType()
-    {
-        return "har";
-    }
 }
diff --git a/src/main/java/org/apache/maven/plugins/ear/JarModule.java b/src/main/java/org/apache/maven/plugins/ear/JarModule.java
index baf30ff..9f9f318 100644
--- a/src/main/java/org/apache/maven/plugins/ear/JarModule.java
+++ b/src/main/java/org/apache/maven/plugins/ear/JarModule.java
@@ -38,6 +38,11 @@
 public class JarModule
     extends AbstractEarModule
 {
+    /**
+     * Default type of the artifact of a non Java EE module such as third party library.
+     */
+    public static final String DEFAULT_ARTIFACT_TYPE = "jar";
+
     private Boolean includeInApplicationXml = Boolean.FALSE;
 
     /**
@@ -45,7 +50,7 @@
      */
     public JarModule()
     {
-        super();
+        this.type = DEFAULT_ARTIFACT_TYPE;
     }
 
     /**
@@ -95,14 +100,6 @@
         setLibBundleDir( earExecutionContext.getDefaultLibBundleDir() );
     }
 
-    /**
-     * {@inheritDoc}
-     */
-    public String getType()
-    {
-        return "jar";
-    }
-
     private void setLibBundleDir( String defaultLibBundleDir )
     {
         if ( defaultLibBundleDir != null && bundleDir == null )
diff --git a/src/main/java/org/apache/maven/plugins/ear/ParModule.java b/src/main/java/org/apache/maven/plugins/ear/ParModule.java
index f88b479..53fbcc9 100644
--- a/src/main/java/org/apache/maven/plugins/ear/ParModule.java
+++ b/src/main/java/org/apache/maven/plugins/ear/ParModule.java
@@ -29,13 +29,17 @@
 public class ParModule
     extends EjbModule
 {
+    /**
+     * Default type of the artifact of a Par module.
+     */
+    public static final String DEFAULT_ARTIFACT_TYPE = "par";
 
     /**
      * Create an instance.
      */
     public ParModule()
     {
-        super();
+        this.type = DEFAULT_ARTIFACT_TYPE;
     }
 
     /**
@@ -45,12 +49,4 @@
     {
         super( a );
     }
-
-    /**
-     * {@inheritDoc}
-     */
-    public String getType()
-    {
-        return "par";
-    }
 }
diff --git a/src/main/java/org/apache/maven/plugins/ear/RarModule.java b/src/main/java/org/apache/maven/plugins/ear/RarModule.java
index 6083eb7..0b3ec8b 100644
--- a/src/main/java/org/apache/maven/plugins/ear/RarModule.java
+++ b/src/main/java/org/apache/maven/plugins/ear/RarModule.java
@@ -30,6 +30,11 @@
 public class RarModule
     extends AbstractEarModule
 {
+    /**
+     * Default type of the artifact of an Java EE connector module.
+     */
+    public static final String DEFAULT_ARTIFACT_TYPE = "rar";
+
     private static final String RAR_MODULE = "connector";
 
     private static final String DEFAULT_LIB_DIRECTORY = "/";
@@ -39,6 +44,7 @@
      */
     public RarModule()
     {
+        this.type = DEFAULT_ARTIFACT_TYPE;
         this.libDirectory = DEFAULT_LIB_DIRECTORY;
     }
 
@@ -65,12 +71,4 @@
 
         writer.endElement();
     }
-
-    /**
-     * {@inheritDoc}
-     */
-    public String getType()
-    {
-        return "rar";
-    }
 }
diff --git a/src/main/java/org/apache/maven/plugins/ear/SarModule.java b/src/main/java/org/apache/maven/plugins/ear/SarModule.java
index b18566e..deb9944 100644
--- a/src/main/java/org/apache/maven/plugins/ear/SarModule.java
+++ b/src/main/java/org/apache/maven/plugins/ear/SarModule.java
@@ -37,6 +37,11 @@
     extends AbstractEarModule
     implements JbossEarModule
 {
+    /**
+     * Default type of the artifact of a JBoss sar module.
+     */
+    public static final String DEFAULT_ARTIFACT_TYPE = "sar";
+
     private static final String SAR_MODULE = "connector";
 
     private static final String DEFAULT_LIB_DIRECTORY = "lib";
@@ -46,6 +51,7 @@
      */
     public SarModule()
     {
+        this.type = DEFAULT_ARTIFACT_TYPE;
         this.libDirectory = DEFAULT_LIB_DIRECTORY;
     }
 
@@ -85,12 +91,4 @@
         writer.endElement();
         writer.endElement();
     }
-
-    /**
-     * {@inheritDoc}
-     */
-    public String getType()
-    {
-        return "sar";
-    }
 }
diff --git a/src/main/java/org/apache/maven/plugins/ear/WebModule.java b/src/main/java/org/apache/maven/plugins/ear/WebModule.java
index f8aada7..89f1ae2 100644
--- a/src/main/java/org/apache/maven/plugins/ear/WebModule.java
+++ b/src/main/java/org/apache/maven/plugins/ear/WebModule.java
@@ -33,6 +33,11 @@
 public class WebModule
     extends AbstractEarModule
 {
+    /**
+     * Default type of the artifact of a Web application module.
+     */
+    public static final String DEFAULT_ARTIFACT_TYPE = "war";
+
     private static final String WEB_MODULE = "web";
 
     private static final String WEB_URI_FIELD = "web-uri";
@@ -48,6 +53,7 @@
      */
     public WebModule()
     {
+        this.type = DEFAULT_ARTIFACT_TYPE;
         this.libDirectory = DEFAULT_LIB_DIRECTORY;
     }
 
@@ -112,14 +118,6 @@
     }
 
     /**
-     * {@inheritDoc}
-     */
-    public String getType()
-    {
-        return "war";
-    }
-
-    /**
      * Generates a default context root for the given artifact, based on the <tt>artifactId</tt>.
      * 
      * @param a the artifact
diff --git a/src/main/java/org/apache/maven/plugins/ear/WsrModule.java b/src/main/java/org/apache/maven/plugins/ear/WsrModule.java
index b1844a1..e2456e6 100644
--- a/src/main/java/org/apache/maven/plugins/ear/WsrModule.java
+++ b/src/main/java/org/apache/maven/plugins/ear/WsrModule.java
@@ -30,10 +30,16 @@
     extends RarModule
 {
     /**
+     * Default type of the artifact of a JBoss wsr module.
+     */
+    public static final String DEFAULT_ARTIFACT_TYPE = "wsr";
+
+    /**
      * Create an instance.
      */
     public WsrModule()
     {
+        this.type = DEFAULT_ARTIFACT_TYPE;
     }
 
     /**
@@ -43,12 +49,4 @@
     {
         super( a );
     }
-
-    /**
-     * {@inheritDoc}
-     */
-    public String getType()
-    {
-        return "wsr";
-    }
 }
\ No newline at end of file
diff --git a/src/site/apt/modules.apt.vm b/src/site/apt/modules.apt.vm
index 5d722a0..e0f8362 100644
--- a/src/site/apt/modules.apt.vm
+++ b/src/site/apt/modules.apt.vm
@@ -85,16 +85,17 @@
 
   The following configuration options are available for EjbClientModule:
 
-  * <<groupId>> - sets the groupId of the ejb-client artifact you want to
-  configure.
+  * <<groupId>> - sets the groupId of the artifact you want to configure.
 
-  * <<artifactId>> - sets the artifactId of the ejb-client artifact you want to
-  configure.
+  * <<artifactId>> - sets the artifactId of the artifact you want to configure.
 
-  * <<classifier>> - sets the classifier of the ejb-client artifact you want to
-  configure if multiple ejb-client artifacts matches the groupId/artifact.  Use
+  * <<type>> - sets the type of the artifact you want to configure.
+  Default is 'ejb-client'.
+
+  * <<classifier>> - sets the classifier of the artifact you want to
+  configure if multiple artifacts matches the groupId/artifactId/type. Use
   the mainArtifactId ('none' by default) to define the main artifact (e.g.
-  the artifact without a classifier)
+  the artifact without a classifier).
 
   * <<bundleDir>> - sets the location of this artifact inside the ear archive.
   If not set, this artifact will be packaged in the root of the archive.
@@ -145,16 +146,17 @@
 
   The following configuration options are available for EjbModule:
 
-  * <<groupId>> - sets the groupId of the ejb artifact you want to
-  configure.
+  * <<groupId>> - sets the groupId of the artifact you want to configure.
 
-  * <<artifactId>> - sets the artifactId of the ejb artifact you want to
-  configure.
+  * <<artifactId>> - sets the artifactId of the artifact you want to configure.
 
-  * <<classifier>> - sets the classifier of the ejb artifact you want to
-  configure if multiple ejb artifacts matches the groupId/artifact.  Use
+  * <<type>> - sets the type of the artifact you want to configure.
+  Default is 'ejb'.
+
+  * <<classifier>> - sets the classifier of the artifact you want to
+  configure if multiple artifacts matches the groupId/artifactId/type. Use
   the mainArtifactId ('none' by default) to define the main artifact (e.g.
-  the artifact without a classifier)
+  the artifact without a classifier).
 
   * <<bundleDir>> - sets the location of this artifact inside the ear archive.
   If not set, this artifact will be packaged in the root of the archive.
@@ -183,16 +185,17 @@
 
   The following configuration options are available for JarModule:
 
-  * <<groupId>> - sets the groupId of the jar artifact you want to
-  configure.
+  * <<groupId>> - sets the groupId of the artifact you want to configure.
 
-  * <<artifactId>> - sets the artifactId of the jar artifact you want to
-  configure.
+  * <<artifactId>> - sets the artifactId of the artifact you want to configure.
 
-  * <<classifier>> - sets the classifier of the jar artifact you want to
-  configure if multiple jar artifacts matches the groupId/artifact. Use
+  * <<type>> - sets the type of the artifact you want to configure.
+  Default is 'jar'. Use 'test-jar' if the artifact of the module is test JAR.
+
+  * <<classifier>> - sets the classifier of the artifact you want to
+  configure if multiple artifacts matches the groupId/artifactId/type. Use
   the mainArtifactId ('none' by default) to define the main artifact (e.g.
-  the artifact without a classifier)
+  the artifact without a classifier).
 
   * <<bundleDir>> - sets the location of this artifact inside the ear archive.
   If not set, this artifact will be packaged in the root of the archive.
@@ -222,16 +225,19 @@
 
   The following configuration options are available for ParModule:
 
-  * <<groupId>> - sets the groupId of the par artifact you want to
-  configure.
+  * <<groupId>> - sets the groupId of the artifact you want to configure.
 
-  * <<artifactId>> - sets the artifactId of the par artifact you want to
-  configure.
+  * <<artifactId>> - sets the artifactId of the artifact you want to configure.
 
-  * <<classifier>> - sets the classifier of the par artifact you want to
-  configure if multiple par artifacts matches the groupId/artifact. Use
+  * <<type>> - sets the type of the artifact you want to configure.
+  Default is 'par'. If the artifact you want to configure is built with
+  {{{https://github.com/mojohaus/jboss-packaging-maven-plugin}JBoss Packaging Maven Plugin}}
+  and has 'jboss-par' type, then that type should be specified explicitly.
+
+  * <<classifier>> - sets the classifier of the artifact you want to
+  configure if multiple artifacts matches the groupId/artifactId/type. Use
   the mainArtifactId ('none' by default) to define the main artifact (e.g.
-  the artifact without a classifier)
+  the artifact without a classifier).
 
   * <<bundleDir>> - sets the location of this artifact inside the ear archive.
   If not set, this artifact will be packaged in the root of the archive.
@@ -260,16 +266,17 @@
 
   The following configuration options are available for RarModule:
 
-  * <<groupId>> - sets the groupId of the rar artifact you want to
-  configure.
+  * <<groupId>> - sets the groupId of the artifact you want to configure.
 
-  * <<artifactId>> - sets the artifactId of the rar artifact you want to
-  configure.
+  * <<artifactId>> - sets the artifactId of the artifact you want to configure.
 
-  * <<classifier>> - sets the classifier of the rar artifact you want to
-  configure if multiple rar artifacts matches the groupId/artifact. Use
+  * <<type>> - sets the type of the artifact you want to configure.
+  Default is 'rar'.
+
+  * <<classifier>> - sets the classifier of the artifact you want to
+  configure if multiple artifacts matches the groupId/artifactId/type. Use
   the mainArtifactId ('none' by default) to define the main artifact (e.g.
-  the artifact without a classifier)
+  the artifact without a classifier).
 
   * <<bundleDir>> - sets the location of this artifact inside the ear archive.
   If not set, this artifact will be packaged in the root of the archive.
@@ -301,16 +308,19 @@
 
   The following configuration options are available for SarModule:
 
-  * <<groupId>> - sets the groupId of the sar artifact you want to
-  configure.
+  * <<groupId>> - sets the groupId of the artifact you want to configure.
 
-  * <<artifactId>> - sets the artifactId of the sar artifact you want to
-  configure.
+  * <<artifactId>> - sets the artifactId of the artifact you want to configure.
 
-  * <<classifier>> - sets the classifier of the sar artifact you want to
-  configure if multiple sar artifacts matches the groupId/artifact. Use
+  * <<type>> - sets the type of the artifact you want to configure.
+  Default is 'sar'. If the artifact you want to configure is built with
+  {{{https://github.com/mojohaus/jboss-packaging-maven-plugin}JBoss Packaging Maven Plugin}}
+  and has 'jboss-sar' type, then that type should be specified explicitly.
+
+  * <<classifier>> - sets the classifier of the artifact you want to
+  configure if multiple artifacts matches the groupId/artifactId/type. Use
   the mainArtifactId ('none' by default) to define the main artifact (e.g.
-  the artifact without a classifier)
+  the artifact without a classifier).
 
   * <<bundleDir>> - sets the location of this artifact inside the ear archive.
   If not set, this artifact will be packaged in the root of the archive.
@@ -338,16 +348,17 @@
 
   The following configuration options are available for WebModule:
 
-  * <<groupId>> - sets the groupId of the web artifact you want to
-  configure.
+  * <<groupId>> - sets the groupId of the artifact you want to configure.
 
-  * <<artifactId>> - sets the artifactId of the web artifact you want to
-  configure.
+  * <<artifactId>> - sets the artifactId of the artifact you want to configure.
 
-  * <<classifier>> - sets the classifier of the web artifact you want to
-  configure if multiple web artifacts matches the groupId/artifact. Use
+  * <<type>> - sets the type of the artifact you want to configure.
+  Default is 'war'.
+
+  * <<classifier>> - sets the classifier of the artifact you want to
+  configure if multiple artifacts matches the groupId/artifactId/type. Use
   the mainArtifactId ('none' by default) to define the main artifact (e.g.
-  the artifact without a classifier)
+  the artifact without a classifier).
 
   * <<bundleDir>> - sets the location of this artifact inside the ear archive.
   If not set, this artifact will be packaged in the root of the archive.
@@ -385,16 +396,17 @@
 
   The following configuration options are available for WsrModule:
 
-  * <<groupId>> - sets the groupId of the wsr artifact you want to
-  configure.
+  * <<groupId>> - sets the groupId of the artifact you want to configure.
 
-  * <<artifactId>> - sets the artifactId of the wsr artifact you want to
-  configure.
+  * <<artifactId>> - sets the artifactId of the artifact you want to configure.
 
-  * <<classifier>> - sets the classifier of the wst artifact you want to
-  configure if multiple wsr artifacts matches the groupId/artifact. Use
+  * <<type>> - sets the type of the artifact you want to configure.
+  Default is 'wsr'.
+
+  * <<classifier>> - sets the classifier of the artifact you want to
+  configure if multiple artifacts matches the groupId/artifactId/type. Use
   the mainArtifactId ('none' by default) to define the main artifact (e.g.
-  the artifact without a classifier)
+  the artifact without a classifier).
 
   * <<bundleDir>> - sets the location of this artifact inside the ear archive.
   If not set, this artifact will be packaged in the root of the archive.
@@ -425,16 +437,19 @@
 
   The following configuration options are available for HarModule:
 
-  * <<groupId>> - sets the groupId of the hibernate archive artifact you
-  want to configure.
+  * <<groupId>> - sets the groupId of the artifact you want to configure.
 
-  * <<artifactId>> - sets the artifactId of the hibernate archive artifact
-  you want to configure.
+  * <<artifactId>> - sets the artifactId of artifact you want to configure.
 
-  * <<classifier>> - sets the classifier of the hibernate archive artifact
-  you want to configure if multiple hibernate archive  artifacts matches
-  the groupId/artifact.  Use the mainArtifactId ('none' by default) to define
-  the main artifact (e.g. the artifact without a classifier)
+  * <<type>> - sets the type of the artifact you want to configure.
+  Default is 'har'. If the artifact you want to configure is built with
+  {{{https://github.com/mojohaus/jboss-packaging-maven-plugin}JBoss Packaging Maven Plugin}}
+  and has 'jboss-har' type, then that type should be specified explicitly.
+
+  * <<classifier>> - sets the classifier of the artifact you want to
+  configure if multiple artifacts matches the groupId/artifactId/type. Use
+  the mainArtifactId ('none' by default) to define the main artifact (e.g.
+  the artifact without a classifier).
 
   * <<bundleDir>> - sets the location of this artifact inside the ear archive.
   If not set, this artifact will be packaged in the root of the archive.
@@ -460,16 +475,17 @@
 
   The following configuration options are available for AppClientModule:
 
-  * <<groupId>> - sets the groupId of the application client artifact you want to
-  configure.
+  * <<groupId>> - sets the groupId of the artifact you want to configure.
 
-  * <<artifactId>> - sets the artifactId of the applicant client artifact you want to
-  configure.
+  * <<artifactId>> - sets the artifactId of the artifact you want to configure.
 
-  * <<classifier>> - sets the classifier of the application client  artifact you want to
-  configure if multiple application client artifacts matches the groupId/artifact.  Use
+  * <<type>> - sets the type of the artifact you want to configure.
+  Default is 'app-client'.
+
+  * <<classifier>> - sets the classifier of the artifact you want to
+  configure if multiple artifacts matches the groupId/artifactId/type. Use
   the mainArtifactId ('none' by default) to define the main artifact (e.g.
-  the artifact without a classifier)
+  the artifact without a classifier).
 
   * <<bundleDir>> - sets the location of this artifact inside the ear archive.
   If not set, this artifact will be packaged in the root of the archive.
diff --git a/src/test/java/org/apache/maven/plugins/ear/it/EarMojoIT.java b/src/test/java/org/apache/maven/plugins/ear/it/EarMojoIT.java
index 1d67239..678c353 100644
--- a/src/test/java/org/apache/maven/plugins/ear/it/EarMojoIT.java
+++ b/src/test/java/org/apache/maven/plugins/ear/it/EarMojoIT.java
@@ -287,7 +287,7 @@
     }
 
     /**
-     * Builds an EAR and make sure that a classified dependency with mutiple candidates is detected when specifying the
+     * Builds an EAR and make sure that a classified dependency with multiple candidates is detected when specifying the
      * classifier.
      */
     public void testProject025()
@@ -299,7 +299,7 @@
     }
 
     /**
-     * Builds an EAR and make sure that the build fails if a unclassifed module configuration with mutiple candidates is
+     * Builds an EAR and make sure that the build fails if a unclassifed module configuration with multiple candidates is
      * specified.
      */
     public void testProject026()
@@ -426,7 +426,7 @@
     }
 
     /**
-     * Builds an EAR and make sure that a non-classified dependency with mutiple candidates is detected when specifying
+     * Builds an EAR and make sure that a non-classified dependency with multiple candidates is detected when specifying
      * the mainArtifactId as classifier.
      */
     public void testProject038()
@@ -1159,4 +1159,61 @@
                 { rarModuleLibDir + jarSampleOneLibrary, rarModuleLibDir + jarSampleTwoLibrary, rarModuleLibDir + jarSampleThreeLibrary } } ,
             null );
     }
+
+    /**
+     * Ensures that test JAR dependency of WAR is handled as regular JAR in terms of packaging and manifest modification
+     * when skinnyWars option is turned on.
+     */
+    public void testProject095()
+        throws Exception
+    {
+        final String warModule = "eartest-war-sample-two-1.0.war";
+        final String jarSampleTwoLibrary = "lib/eartest-jar-sample-two-1.0.jar";
+        final String jarSampleThreeLibrary = "lib/eartest-jar-sample-three-with-deps-1.0.jar";
+        final String jarSampleFourTestLibrary = "lib/eartest-jar-sample-four-1.0-tests.jar";
+        doTestProject( "project-095", "ear",
+            new String[] { warModule, jarSampleTwoLibrary, jarSampleThreeLibrary, jarSampleFourTestLibrary },
+            new boolean[] { false, false, false, false },
+            new String[] { warModule },
+            new boolean[] { false },
+            new String[][] { { jarSampleFourTestLibrary, jarSampleThreeLibrary, jarSampleTwoLibrary } },
+            true );
+    }
+
+    /**
+     * Ensures that test JAR dependency representing Java module is described in deployment descriptor
+     * if includeInApplicationXml property of module is {@code true}.
+     */
+    public void testProject096()
+        throws Exception
+    {
+        final String warModule = "eartest-war-sample-two-1.0.war";
+        final String jarSampleTwoLibrary = "eartest-jar-sample-two-1.0.jar";
+        final String jarSampleThreeLibrary = "eartest-jar-sample-three-with-deps-1.0.jar";
+        final String jarSampleFourTestLibrary = "eartest-jar-sample-four-1.0-tests.jar";
+        final String jarSampleFiveLibrary = "eartest-jar-sample-five-1.0.jar";
+        doTestProject( "project-096", "ear",
+            new String[] { warModule, jarSampleTwoLibrary, jarSampleThreeLibrary, jarSampleFourTestLibrary, jarSampleFiveLibrary },
+            new boolean[] { false, false, false, false, false },
+            new String[] { warModule },
+            new boolean[] { false },
+            new String[][] { { jarSampleFourTestLibrary, jarSampleFiveLibrary, jarSampleThreeLibrary, jarSampleTwoLibrary } },
+            true );
+    }
+
+    /**
+     * Ensures that artifacts with jboss-sar, jboss-har and jboss-par types are packaged in EAR and
+     * described in deployment descriptor when respective types are configured for EAR modules.
+     */
+    public void testProject097()
+        throws Exception
+    {
+        final String warModule = "eartest-war-sample-three-1.0.war";
+        final String sarSampleTwo = "eartest-sar-sample-two-1.0.sar";
+        final String harSampleTwo = "eartest-har-sample-two-1.0.har";
+        final String parSampleTwo = "eartest-par-sample-one-1.0.par";
+        final String[] artifacts = { warModule, sarSampleTwo, harSampleTwo, parSampleTwo };
+        final boolean[] artifactsDirectory = { false, false, false, false };
+        doTestProject( "project-097", "ear", artifacts, artifactsDirectory, null, null, null , true );
+    }
 }
diff --git a/src/test/resources/projects/project-095/ear/expected-META-INF/application.xml b/src/test/resources/projects/project-095/ear/expected-META-INF/application.xml
new file mode 100644
index 0000000..46efdd0
--- /dev/null
+++ b/src/test/resources/projects/project-095/ear/expected-META-INF/application.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" version="6">
+  <display-name>maven-ear-plugin-test-project-095</display-name>
+  <module>
+    <web>
+      <web-uri>eartest-war-sample-two-1.0.war</web-uri>
+      <context-root>/war-sample-two</context-root>
+    </web>
+  </module>
+  <library-directory>lib</library-directory>
+</application>
diff --git a/src/test/resources/projects/project-095/ear/pom.xml b/src/test/resources/projects/project-095/ear/pom.xml
new file mode 100644
index 0000000..37b9e9a
--- /dev/null
+++ b/src/test/resources/projects/project-095/ear/pom.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>ear</groupId>
+    <artifactId>maven-ear-plugin-test-project-095-parent</artifactId>
+    <version>99.0</version>
+  </parent>
+  <artifactId>maven-ear-plugin-test-project-095</artifactId>
+  <packaging>ear</packaging>
+  <dependencies>
+    <dependency>
+      <groupId>eartest</groupId>
+      <artifactId>war-sample-two</artifactId>
+      <type>war</type>
+    </dependency>
+    <dependency>
+      <groupId>eartest</groupId>
+      <artifactId>war-sample-two</artifactId>
+      <type>pom</type>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-ear-plugin</artifactId>
+        <version>@project.version@</version>
+        <configuration>
+          <version>6</version>
+          <defaultLibBundleDir>lib</defaultLibBundleDir>
+          <skinnyWars>true</skinnyWars>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/src/test/resources/projects/project-095/jar/pom.xml b/src/test/resources/projects/project-095/jar/pom.xml
new file mode 100644
index 0000000..3796ce5
--- /dev/null
+++ b/src/test/resources/projects/project-095/jar/pom.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>ear</groupId>
+    <artifactId>maven-ear-plugin-test-project-095-parent</artifactId>
+    <version>99.0</version>
+  </parent>
+  <groupId>eartest</groupId>
+  <artifactId>jar-sample-four</artifactId>
+  <version>1.0</version>
+  <dependencies>
+    <dependency>
+      <groupId>eartest</groupId>
+      <artifactId>jar-sample-three-with-deps</artifactId>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>test-jar</id>
+            <goals>
+              <goal>test-jar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/src/test/resources/projects/project-095/pom.xml b/src/test/resources/projects/project-095/pom.xml
new file mode 100644
index 0000000..9d2f247
--- /dev/null
+++ b/src/test/resources/projects/project-095/pom.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>ear</groupId>
+  <artifactId>maven-ear-plugin-test-project-095-parent</artifactId>
+  <version>99.0</version>
+  <packaging>pom</packaging>
+  <modules>
+    <module>jar</module>
+    <module>war</module>
+    <module>ear</module>
+  </modules>
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>eartest</groupId>
+        <artifactId>jar-sample-three-with-deps</artifactId>
+        <version>1.0</version>
+      </dependency>
+      <dependency>
+        <groupId>eartest</groupId>
+        <artifactId>jar-sample-four</artifactId>
+        <version>1.0</version>
+        <classifier>tests</classifier>
+        <type>test-jar</type>
+      </dependency>
+      <dependency>
+        <groupId>eartest</groupId>
+        <artifactId>war-sample-two</artifactId>
+        <version>1.0</version>
+        <type>war</type>
+      </dependency>
+      <dependency>
+        <groupId>eartest</groupId>
+        <artifactId>war-sample-two</artifactId>
+        <version>1.0</version>
+        <type>pom</type>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-war-plugin</artifactId>
+          <version>@mavenWarPluginVersion@</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-jar-plugin</artifactId>
+          <version>@mavenJarPluginVersion@</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+</project>
diff --git a/src/test/resources/projects/project-095/war/pom.xml b/src/test/resources/projects/project-095/war/pom.xml
new file mode 100644
index 0000000..a0549e7
--- /dev/null
+++ b/src/test/resources/projects/project-095/war/pom.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>ear</groupId>
+    <artifactId>maven-ear-plugin-test-project-095-parent</artifactId>
+    <version>99.0</version>
+  </parent>
+  <groupId>eartest</groupId>
+  <artifactId>war-sample-two</artifactId>
+  <version>1.0</version>
+  <packaging>war</packaging>
+  <dependencies>
+    <dependency>
+      <groupId>eartest</groupId>
+      <artifactId>jar-sample-four</artifactId>
+      <classifier>tests</classifier>
+      <type>test-jar</type>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/src/test/resources/projects/project-095/war/src/main/webapp/WEB-INF/web.xml b/src/test/resources/projects/project-095/war/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..fbbf307
--- /dev/null
+++ b/src/test/resources/projects/project-095/war/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
+         version="3.0">
+</web-app>
diff --git a/src/test/resources/projects/project-096/ear/expected-META-INF/application.xml b/src/test/resources/projects/project-096/ear/expected-META-INF/application.xml
new file mode 100644
index 0000000..96a5d41
--- /dev/null
+++ b/src/test/resources/projects/project-096/ear/expected-META-INF/application.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" version="6">
+  <display-name>maven-ear-plugin-test-project-096</display-name>
+  <module>
+    <java>eartest-jar-sample-four-1.0-tests.jar</java>
+  </module>
+  <module>
+    <java>eartest-jar-sample-five-1.0.jar</java>
+  </module>
+  <module>
+    <web>
+      <web-uri>eartest-war-sample-two-1.0.war</web-uri>
+      <context-root>/war-sample-two</context-root>
+    </web>
+  </module>
+</application>
diff --git a/src/test/resources/projects/project-096/ear/pom.xml b/src/test/resources/projects/project-096/ear/pom.xml
new file mode 100644
index 0000000..9cacc91
--- /dev/null
+++ b/src/test/resources/projects/project-096/ear/pom.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>ear</groupId>
+    <artifactId>maven-ear-plugin-test-project-096-parent</artifactId>
+    <version>99.0</version>
+  </parent>
+  <artifactId>maven-ear-plugin-test-project-096</artifactId>
+  <packaging>ear</packaging>
+  <dependencies>
+    <dependency>
+      <groupId>eartest</groupId>
+      <artifactId>war-sample-two</artifactId>
+      <type>war</type>
+    </dependency>
+    <dependency>
+      <groupId>eartest</groupId>
+      <artifactId>war-sample-two</artifactId>
+      <type>pom</type>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-ear-plugin</artifactId>
+        <version>@project.version@</version>
+        <configuration>
+          <version>6</version>
+          <skinnyWars>true</skinnyWars>
+          <modules>
+            <jarModule>
+              <groupId>eartest</groupId>
+              <artifactId>jar-sample-four</artifactId>
+              <type>test-jar</type>
+              <includeInApplicationXml>true</includeInApplicationXml>
+            </jarModule>
+            <jarModule>
+              <groupId>eartest</groupId>
+              <artifactId>jar-sample-five</artifactId>
+              <includeInApplicationXml>true</includeInApplicationXml>
+            </jarModule>
+          </modules>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/src/test/resources/projects/project-096/jar-five/pom.xml b/src/test/resources/projects/project-096/jar-five/pom.xml
new file mode 100644
index 0000000..7e0b335
--- /dev/null
+++ b/src/test/resources/projects/project-096/jar-five/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>ear</groupId>
+    <artifactId>maven-ear-plugin-test-project-096-parent</artifactId>
+    <version>99.0</version>
+  </parent>
+  <groupId>eartest</groupId>
+  <artifactId>jar-sample-five</artifactId>
+  <version>1.0</version>
+  <dependencies>
+    <dependency>
+      <groupId>eartest</groupId>
+      <artifactId>jar-sample-three-with-deps</artifactId>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/src/test/resources/projects/project-096/jar-four/pom.xml b/src/test/resources/projects/project-096/jar-four/pom.xml
new file mode 100644
index 0000000..0632636
--- /dev/null
+++ b/src/test/resources/projects/project-096/jar-four/pom.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>ear</groupId>
+    <artifactId>maven-ear-plugin-test-project-096-parent</artifactId>
+    <version>99.0</version>
+  </parent>
+  <groupId>eartest</groupId>
+  <artifactId>jar-sample-four</artifactId>
+  <version>1.0</version>
+  <dependencies>
+    <dependency>
+      <groupId>eartest</groupId>
+      <artifactId>jar-sample-three-with-deps</artifactId>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>test-jar</id>
+            <goals>
+              <goal>test-jar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/src/test/resources/projects/project-096/pom.xml b/src/test/resources/projects/project-096/pom.xml
new file mode 100644
index 0000000..f35c27c
--- /dev/null
+++ b/src/test/resources/projects/project-096/pom.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>ear</groupId>
+  <artifactId>maven-ear-plugin-test-project-096-parent</artifactId>
+  <version>99.0</version>
+  <packaging>pom</packaging>
+  <modules>
+    <module>jar-four</module>
+    <module>jar-five</module>
+    <module>war</module>
+    <module>ear</module>
+  </modules>
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>eartest</groupId>
+        <artifactId>jar-sample-three-with-deps</artifactId>
+        <version>1.0</version>
+      </dependency>
+      <dependency>
+        <groupId>eartest</groupId>
+        <artifactId>jar-sample-four</artifactId>
+        <version>1.0</version>
+        <classifier>tests</classifier>
+        <type>test-jar</type>
+      </dependency>
+      <dependency>
+        <groupId>eartest</groupId>
+        <artifactId>jar-sample-five</artifactId>
+        <version>1.0</version>
+        <type>jar</type>
+      </dependency>
+      <dependency>
+        <groupId>eartest</groupId>
+        <artifactId>war-sample-two</artifactId>
+        <version>1.0</version>
+        <type>war</type>
+      </dependency>
+      <dependency>
+        <groupId>eartest</groupId>
+        <artifactId>war-sample-two</artifactId>
+        <version>1.0</version>
+        <type>pom</type>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-war-plugin</artifactId>
+          <version>@mavenWarPluginVersion@</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-jar-plugin</artifactId>
+          <version>@mavenJarPluginVersion@</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+</project>
diff --git a/src/test/resources/projects/project-096/war/pom.xml b/src/test/resources/projects/project-096/war/pom.xml
new file mode 100644
index 0000000..33547e7
--- /dev/null
+++ b/src/test/resources/projects/project-096/war/pom.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>ear</groupId>
+    <artifactId>maven-ear-plugin-test-project-096-parent</artifactId>
+    <version>99.0</version>
+  </parent>
+  <groupId>eartest</groupId>
+  <artifactId>war-sample-two</artifactId>
+  <version>1.0</version>
+  <packaging>war</packaging>
+  <dependencies>
+    <dependency>
+      <groupId>eartest</groupId>
+      <artifactId>jar-sample-four</artifactId>
+      <classifier>tests</classifier>
+      <type>test-jar</type>
+    </dependency>
+    <dependency>
+      <groupId>eartest</groupId>
+      <artifactId>jar-sample-five</artifactId>
+      <type>jar</type>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/src/test/resources/projects/project-096/war/src/main/webapp/WEB-INF/web.xml b/src/test/resources/projects/project-096/war/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..fbbf307
--- /dev/null
+++ b/src/test/resources/projects/project-096/war/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
+         version="3.0">
+</web-app>
diff --git a/src/test/resources/projects/project-097/ear/expected-META-INF/application.xml b/src/test/resources/projects/project-097/ear/expected-META-INF/application.xml
new file mode 100644
index 0000000..3382f5a
--- /dev/null
+++ b/src/test/resources/projects/project-097/ear/expected-META-INF/application.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" version="6">
+  <display-name>maven-ear-plugin-test-project-097</display-name>
+  <module>
+    <web>
+      <web-uri>eartest-war-sample-three-1.0.war</web-uri>
+      <context-root>/war-sample-three</context-root>
+    </web>
+  </module>
+  <module>
+    <ejb>eartest-par-sample-one-1.0.par</ejb>
+  </module>
+</application>
diff --git a/src/test/resources/projects/project-097/ear/expected-META-INF/jboss-app.xml b/src/test/resources/projects/project-097/ear/expected-META-INF/jboss-app.xml
new file mode 100644
index 0000000..dc9962a
--- /dev/null
+++ b/src/test/resources/projects/project-097/ear/expected-META-INF/jboss-app.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<!DOCTYPE jboss-app PUBLIC
+	"-//JBoss//DTD Java EE Application 5.0//EN"
+	"http://www.jboss.org/j2ee/dtd/jboss-app_5_0.dtd">
+<jboss-app>
+  <module>
+    <service>eartest-sar-sample-two-1.0.sar</service>
+  </module>
+  <module>
+    <har>eartest-har-sample-two-1.0.har</har>
+  </module>
+</jboss-app>
diff --git a/src/test/resources/projects/project-097/ear/pom.xml b/src/test/resources/projects/project-097/ear/pom.xml
new file mode 100644
index 0000000..090ff2e
--- /dev/null
+++ b/src/test/resources/projects/project-097/ear/pom.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>ear</groupId>
+    <artifactId>maven-ear-plugin-test-project-097-parent</artifactId>
+    <version>99.0</version>
+  </parent>
+  <artifactId>maven-ear-plugin-test-project-097</artifactId>
+  <packaging>ear</packaging>
+  <dependencies>
+    <dependency>
+      <groupId>eartest</groupId>
+      <artifactId>war-sample-three</artifactId>
+      <type>war</type>
+    </dependency>
+    <dependency>
+      <groupId>eartest</groupId>
+      <artifactId>sar-sample-two</artifactId>
+      <type>jboss-sar</type>
+    </dependency>
+    <dependency>
+      <groupId>eartest</groupId>
+      <artifactId>har-sample-two</artifactId>
+      <type>jboss-har</type>
+    </dependency>
+    <dependency>
+      <groupId>eartest</groupId>
+      <artifactId>par-sample-one</artifactId>
+      <type>jboss-par</type>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-ear-plugin</artifactId>
+        <version>@project.version@</version>
+        <configuration>
+          <version>6</version>
+          <sarModule>
+            <groupId>eartest</groupId>
+            <artifactId>sar-sample-two</artifactId>
+            <type>jboss-sar</type>
+          </sarModule>
+          <sarModule>
+            <groupId>eartest</groupId>
+            <artifactId>har-sample-two</artifactId>
+            <type>jboss-sar</type>
+          </sarModule>
+          <parModule>
+            <groupId>eartest</groupId>
+            <artifactId>par-sample-one</artifactId>
+            <type>jboss-par</type>
+          </parModule>
+          <jboss>
+            <version>5</version>
+          </jboss>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/src/test/resources/projects/project-097/har/pom.xml b/src/test/resources/projects/project-097/har/pom.xml
new file mode 100644
index 0000000..f42449b
--- /dev/null
+++ b/src/test/resources/projects/project-097/har/pom.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>ear</groupId>
+    <artifactId>maven-ear-plugin-test-project-097-parent</artifactId>
+    <version>99.0</version>
+  </parent>
+  <groupId>eartest</groupId>
+  <artifactId>har-sample-two</artifactId>
+  <version>1.0</version>
+  <packaging>jboss-har</packaging>
+</project>
diff --git a/src/test/resources/projects/project-097/har/src/main/resources/META-INF/jboss-service.xml b/src/test/resources/projects/project-097/har/src/main/resources/META-INF/jboss-service.xml
new file mode 100644
index 0000000..5316328
--- /dev/null
+++ b/src/test/resources/projects/project-097/har/src/main/resources/META-INF/jboss-service.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<server>
+</server>
diff --git a/src/test/resources/projects/project-097/par/pom.xml b/src/test/resources/projects/project-097/par/pom.xml
new file mode 100644
index 0000000..ac58ba1
--- /dev/null
+++ b/src/test/resources/projects/project-097/par/pom.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>ear</groupId>
+    <artifactId>maven-ear-plugin-test-project-097-parent</artifactId>
+    <version>99.0</version>
+  </parent>
+  <groupId>eartest</groupId>
+  <artifactId>par-sample-one</artifactId>
+  <version>1.0</version>
+  <packaging>jboss-par</packaging>
+</project>
diff --git a/src/test/resources/projects/project-097/par/src/main/jpdl/par-sample-one/processdefinition.xml b/src/test/resources/projects/project-097/par/src/main/jpdl/par-sample-one/processdefinition.xml
new file mode 100644
index 0000000..44d6f13
--- /dev/null
+++ b/src/test/resources/projects/project-097/par/src/main/jpdl/par-sample-one/processdefinition.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<process-definition  xmlns="urn:jbpm.org:jpdl-3.2"  name="par-basic-test">
+</process-definition>
diff --git a/src/test/resources/projects/project-097/pom.xml b/src/test/resources/projects/project-097/pom.xml
new file mode 100644
index 0000000..4b0ee79
--- /dev/null
+++ b/src/test/resources/projects/project-097/pom.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>ear</groupId>
+  <artifactId>maven-ear-plugin-test-project-097-parent</artifactId>
+  <version>99.0</version>
+  <packaging>pom</packaging>
+  <modules>
+    <module>war</module>
+    <module>sar</module>
+    <module>har</module>
+    <module>par</module>
+    <module>ear</module>
+  </modules>
+  <properties>
+    <maven.compiler.source>1.7</maven.compiler.source>
+    <maven.compiler.target>1.7</maven.compiler.target>
+  </properties>
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>eartest</groupId>
+        <artifactId>war-sample-three</artifactId>
+        <version>1.0</version>
+        <type>war</type>
+      </dependency>
+      <dependency>
+        <groupId>eartest</groupId>
+        <artifactId>sar-sample-two</artifactId>
+        <version>1.0</version>
+        <type>jboss-sar</type>
+      </dependency>
+      <dependency>
+        <groupId>eartest</groupId>
+        <artifactId>har-sample-two</artifactId>
+        <version>1.0</version>
+        <type>jboss-har</type>
+      </dependency>
+      <dependency>
+        <groupId>eartest</groupId>
+        <artifactId>par-sample-one</artifactId>
+        <version>1.0</version>
+        <type>jboss-par</type>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-war-plugin</artifactId>
+          <version>@mavenWarPluginVersion@</version>
+        </plugin>
+        <plugin>
+          <groupId>org.codehaus.mojo</groupId>
+          <artifactId>jboss-packaging-maven-plugin</artifactId>
+          <version>@jbossPackagingPluginVersion@</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+    <plugins>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>jboss-packaging-maven-plugin</artifactId>
+        <extensions>true</extensions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/src/test/resources/projects/project-097/sar/pom.xml b/src/test/resources/projects/project-097/sar/pom.xml
new file mode 100644
index 0000000..32d133b
--- /dev/null
+++ b/src/test/resources/projects/project-097/sar/pom.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>ear</groupId>
+    <artifactId>maven-ear-plugin-test-project-097-parent</artifactId>
+    <version>99.0</version>
+  </parent>
+  <groupId>eartest</groupId>
+  <artifactId>sar-sample-two</artifactId>
+  <version>1.0</version>
+  <packaging>jboss-sar</packaging>
+</project>
diff --git a/src/test/resources/projects/project-097/sar/src/main/resources/META-INF/jboss-service.xml b/src/test/resources/projects/project-097/sar/src/main/resources/META-INF/jboss-service.xml
new file mode 100644
index 0000000..5316328
--- /dev/null
+++ b/src/test/resources/projects/project-097/sar/src/main/resources/META-INF/jboss-service.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<server>
+</server>
diff --git a/src/test/resources/projects/project-097/war/pom.xml b/src/test/resources/projects/project-097/war/pom.xml
new file mode 100644
index 0000000..969e296
--- /dev/null
+++ b/src/test/resources/projects/project-097/war/pom.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>ear</groupId>
+    <artifactId>maven-ear-plugin-test-project-097-parent</artifactId>
+    <version>99.0</version>
+  </parent>
+  <groupId>eartest</groupId>
+  <artifactId>war-sample-three</artifactId>
+  <version>1.0</version>
+  <packaging>war</packaging>
+</project>
diff --git a/src/test/resources/projects/project-097/war/src/main/webapp/WEB-INF/web.xml b/src/test/resources/projects/project-097/war/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..fbbf307
--- /dev/null
+++ b/src/test/resources/projects/project-097/war/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
+         version="3.0">
+</web-app>
