Author: snicoll
Date: Mon Mar 21 06:10:23 2011
New Revision: 1083681

URL: http://svn.apache.org/viewvc?rev=1083681&view=rev
Log:
MACR-1: Initial version of the plugin

Added:
    maven/plugins/trunk/maven-acr-plugin/   (with props)
    maven/plugins/trunk/maven-acr-plugin/pom.xml
    maven/plugins/trunk/maven-acr-plugin/src/
    maven/plugins/trunk/maven-acr-plugin/src/it/
    maven/plugins/trunk/maven-acr-plugin/src/it/it-01/
    maven/plugins/trunk/maven-acr-plugin/src/it/it-01/pom.xml
    maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/
    maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/main/
    maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/main/java/
    maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/main/java/org/
    maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/main/java/org/apache/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/main/java/org/apache/maven/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/main/java/org/apache/maven/plugin/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/main/java/org/apache/maven/plugin/acr/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/main/java/org/apache/maven/plugin/acr/it/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/main/java/org/apache/maven/plugin/acr/it/it01/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/main/java/org/apache/maven/plugin/acr/it/it01/SampleApp.java
    maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/main/resources/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/main/resources/META-INF/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/main/resources/META-INF/application-client.xml
    maven/plugins/trunk/maven-acr-plugin/src/it/it-01/verify.bsh
    maven/plugins/trunk/maven-acr-plugin/src/it/it-02/
    maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/
    maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/pom.xml
    maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/
    maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/main/
    maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/main/java/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/main/java/org/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/main/java/org/apache/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/main/java/org/apache/maven/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/main/java/org/apache/maven/plugin/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/main/java/org/apache/maven/plugin/acr/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/main/java/org/apache/maven/plugin/acr/it/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/main/java/org/apache/maven/plugin/acr/it/it02/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/main/java/org/apache/maven/plugin/acr/it/it02/SampleApp.java
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/main/resources/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/main/resources/META-INF/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/main/resources/META-INF/application-client.xml
    maven/plugins/trunk/maven-acr-plugin/src/it/it-02/bundle/
    maven/plugins/trunk/maven-acr-plugin/src/it/it-02/bundle/pom.xml
    maven/plugins/trunk/maven-acr-plugin/src/it/it-02/bundle/src/
    maven/plugins/trunk/maven-acr-plugin/src/it/it-02/bundle/src/main/
    maven/plugins/trunk/maven-acr-plugin/src/it/it-02/bundle/src/main/java/
    maven/plugins/trunk/maven-acr-plugin/src/it/it-02/bundle/src/main/java/org/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/bundle/src/main/java/org/apache/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/bundle/src/main/java/org/apache/maven/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/bundle/src/main/java/org/apache/maven/plugin/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/bundle/src/main/java/org/apache/maven/plugin/acr/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/bundle/src/main/java/org/apache/maven/plugin/acr/it/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/bundle/src/main/java/org/apache/maven/plugin/acr/it/it02/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/bundle/src/main/java/org/apache/maven/plugin/acr/it/it02/DependencyTest.java
    maven/plugins/trunk/maven-acr-plugin/src/it/it-02/pom.xml
    maven/plugins/trunk/maven-acr-plugin/src/it/it-02/verify.bsh
    maven/plugins/trunk/maven-acr-plugin/src/it/it-03/
    maven/plugins/trunk/maven-acr-plugin/src/it/it-03/pom.xml
    maven/plugins/trunk/maven-acr-plugin/src/it/it-03/src/
    maven/plugins/trunk/maven-acr-plugin/src/it/it-03/src/main/
    maven/plugins/trunk/maven-acr-plugin/src/it/it-03/src/main/resources/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-03/src/main/resources/META-INF/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-03/src/main/resources/META-INF/application-client.xml
    maven/plugins/trunk/maven-acr-plugin/src/it/it-03/verify.bsh
      - copied, changed from r1081277, 
maven/plugins/trunk/maven-ejb-plugin/src/it/mejb-34-filtered/verify.bsh
    maven/plugins/trunk/maven-acr-plugin/src/it/it-04/
    maven/plugins/trunk/maven-acr-plugin/src/it/it-04/pom.xml
    maven/plugins/trunk/maven-acr-plugin/src/it/it-04/src/
    maven/plugins/trunk/maven-acr-plugin/src/it/it-04/src/main/
    maven/plugins/trunk/maven-acr-plugin/src/it/it-04/src/main/resources/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-04/src/main/resources/META-INF/
    
maven/plugins/trunk/maven-acr-plugin/src/it/it-04/src/main/resources/META-INF/application-client.xml
    maven/plugins/trunk/maven-acr-plugin/src/it/it-04/verify.bsh
      - copied, changed from r1081277, 
maven/plugins/trunk/maven-ejb-plugin/src/it/mejb-34-filtered/verify.bsh
    maven/plugins/trunk/maven-acr-plugin/src/it/settings.xml
      - copied unchanged from r1081277, 
maven/plugins/trunk/maven-ejb-plugin/src/it/settings.xml
    maven/plugins/trunk/maven-acr-plugin/src/main/
    maven/plugins/trunk/maven-acr-plugin/src/main/java/
    maven/plugins/trunk/maven-acr-plugin/src/main/java/org/
    maven/plugins/trunk/maven-acr-plugin/src/main/java/org/apache/
    maven/plugins/trunk/maven-acr-plugin/src/main/java/org/apache/maven/
    maven/plugins/trunk/maven-acr-plugin/src/main/java/org/apache/maven/plugin/
    
maven/plugins/trunk/maven-acr-plugin/src/main/java/org/apache/maven/plugin/acr/
    
maven/plugins/trunk/maven-acr-plugin/src/main/java/org/apache/maven/plugin/acr/AcrMojo.java
    maven/plugins/trunk/maven-acr-plugin/src/main/resources/
    maven/plugins/trunk/maven-acr-plugin/src/main/resources/META-INF/
    maven/plugins/trunk/maven-acr-plugin/src/main/resources/META-INF/plexus/
    
maven/plugins/trunk/maven-acr-plugin/src/main/resources/META-INF/plexus/components.xml
Modified:
    maven/plugins/trunk/pom.xml

Propchange: maven/plugins/trunk/maven-acr-plugin/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Mon Mar 21 06:10:23 2011
@@ -0,0 +1,3 @@
+*.iml
+
+target

Added: maven/plugins/trunk/maven-acr-plugin/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-acr-plugin/pom.xml?rev=1083681&view=auto
==============================================================================
--- maven/plugins/trunk/maven-acr-plugin/pom.xml (added)
+++ maven/plugins/trunk/maven-acr-plugin/pom.xml Mon Mar 21 06:10:23 2011
@@ -0,0 +1,158 @@
+<?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/xsd/maven-4.0.0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.maven.plugins</groupId>
+    <artifactId>maven-plugins</artifactId>
+    <version>19</version>
+  </parent>
+
+  <artifactId>maven-acr-plugin</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>maven-plugin</packaging>
+
+  <name>Maven ACR Plugin</name>
+  <description>Generates a J2EE Application Client file.</description>
+
+  <prerequisites>
+    <maven>2.0.6</maven>
+  </prerequisites>
+
+  <scm>
+    
<connection>scm:svn:http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-acr-plugin/</connection>
+    
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/plugins/trunk/maven-acr-plugin/
+    </developerConnection>
+    
<url>http://svn.apache.org/viewvc/maven/plugins/trunk/maven-acr-plugin/</url>
+  </scm>
+  <issueManagement>
+    <system>JIRA</system>
+    <url>http://jira.codehaus.org/browse/MACR</url>
+  </issueManagement>
+
+  <properties>
+    <mavenVersion>2.2.1</mavenVersion>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-api</artifactId>
+      <version>${mavenVersion}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-project</artifactId>
+      <version>${mavenVersion}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-artifact</artifactId>
+      <version>${mavenVersion}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-archiver</artifactId>
+      <version>2.4.1</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.codehaus.plexus</groupId>
+          <artifactId>plexus-component-api</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.shared</groupId>
+      <artifactId>maven-filtering</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-interpolation</artifactId>
+      <version>1.12</version>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+      <version>2.0.5</version>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-archiver</artifactId>
+      <version>1.0</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.codehaus.plexus</groupId>
+          <artifactId>plexus-component-api</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.shared</groupId>
+      <artifactId>maven-plugin-testing-harness</artifactId>
+      <version>1.1</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <profiles>
+    <profile>
+      <id>run-its</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-invoker-plugin</artifactId>
+            <version>1.5</version>
+            <configuration>
+              <debug>true</debug>
+              <projectsDirectory>src/it</projectsDirectory>
+              <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
+              <pomIncludes>
+                <pomInclude>*/pom.xml</pomInclude>
+              </pomIncludes>
+              <preBuildHookScript>setup</preBuildHookScript>
+              <postBuildHookScript>verify</postBuildHookScript>
+              
<localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
+              <settingsFile>src/it/settings.xml</settingsFile>
+              <goals>
+                <goal>clean</goal>
+                <goal>package</goal>
+              </goals>
+            </configuration>
+            <executions>
+              <execution>
+                <id>integration-test</id>
+                <goals>
+                  <goal>install</goal>
+                  <goal>run</goal>
+                </goals>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+</project>

Added: maven/plugins/trunk/maven-acr-plugin/src/it/it-01/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-acr-plugin/src/it/it-01/pom.xml?rev=1083681&view=auto
==============================================================================
--- maven/plugins/trunk/maven-acr-plugin/src/it/it-01/pom.xml (added)
+++ maven/plugins/trunk/maven-acr-plugin/src/it/it-01/pom.xml Mon Mar 21 
06:10:23 2011
@@ -0,0 +1,47 @@
+<?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>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.plugin</groupId>
+  <artifactId>maven-acr-plugin-it01</artifactId>
+  <version>1.0</version>
+  <packaging>app-client</packaging>
+
+  <name>Maven ACR Plugin :: Integration test 01</name>
+  <description>Test a simple generation</description>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-acr-plugin</artifactId>
+        <version>@project.version@</version>
+        <extensions>true</extensions>
+      </plugin>
+    </plugins>
+  </build>
+</project>

Added: 
maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/main/java/org/apache/maven/plugin/acr/it/it01/SampleApp.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/main/java/org/apache/maven/plugin/acr/it/it01/SampleApp.java?rev=1083681&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/main/java/org/apache/maven/plugin/acr/it/it01/SampleApp.java
 (added)
+++ 
maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/main/java/org/apache/maven/plugin/acr/it/it01/SampleApp.java
 Mon Mar 21 06:10:23 2011
@@ -0,0 +1,12 @@
+package org.apache.maven.plugin.acr.it.it01;
+
+
+public class SampleApp
+{
+
+    public String sayHello( String t )
+    {
+        return "Hello " + t;
+    }
+
+}
\ No newline at end of file

Added: 
maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/main/resources/META-INF/application-client.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/main/resources/META-INF/application-client.xml?rev=1083681&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/main/resources/META-INF/application-client.xml
 (added)
+++ 
maven/plugins/trunk/maven-acr-plugin/src/it/it-01/src/main/resources/META-INF/application-client.xml
 Mon Mar 21 06:10:23 2011
@@ -0,0 +1,15 @@
+<application-client xmlns="http://java.sun.com/xml/ns/j2ee";
+                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+                    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
+                    http://java.sun.com/xml/ns/j2ee/application-client_1_4.xsd";
+                    version="1.4">
+
+  <display-name>A sample app client</display-name>
+
+  <env-entry>
+    <env-entry-name>myKey</env-entry-name>
+    <env-entry-type>java.lang.String</env-entry-type>
+    <env-entry-value>myValue</env-entry-value>
+  </env-entry>
+
+</application-client>
\ No newline at end of file

Added: maven/plugins/trunk/maven-acr-plugin/src/it/it-01/verify.bsh
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-acr-plugin/src/it/it-01/verify.bsh?rev=1083681&view=auto
==============================================================================
--- maven/plugins/trunk/maven-acr-plugin/src/it/it-01/verify.bsh (added)
+++ maven/plugins/trunk/maven-acr-plugin/src/it/it-01/verify.bsh Mon Mar 21 
06:10:23 2011
@@ -0,0 +1,40 @@
+import java.io.*;
+import java.util.*;
+import java.util.jar.*;
+import java.util.regex.*;
+
+try
+{
+    File jarFile = new File( basedir, "target/maven-acr-plugin-it01-1.0.jar" );
+    System.out.println( "Checking for existence of " + jarFile );
+    if ( !jarFile.isFile() )
+    {
+        System.out.println( "FAILURE!" );
+        return false;
+    }
+
+    JarFile jar = new JarFile( jarFile );
+
+    String[] includedEntries = {
+        "META-INF/application-client.xml",
+        "org/apache/maven/plugin/acr/it/it01/SampleApp.class",
+    };
+    for ( String included : includedEntries )
+    {
+        System.out.println( "Checking for existence of " + included );
+        if ( jar.getEntry( included ) == null )
+        {
+            System.out.println( "FAILURE!" );
+            return false;
+        }
+    }
+
+    jar.close();
+}
+catch( Throwable t )
+{
+    t.printStackTrace();
+    return false;
+}
+
+return true;

Added: maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/pom.xml?rev=1083681&view=auto
==============================================================================
--- maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/pom.xml (added)
+++ maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/pom.xml Mon 
Mar 21 06:10:23 2011
@@ -0,0 +1,40 @@
+<?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>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.plugin</groupId>
+    <artifactId>maven-acr-plugin-it02</artifactId>
+    <version>1.0</version>
+    <relativePath>../pom.xml</relativePath>
+  </parent>
+  <artifactId>maven-acr-plugin-it02-app-client</artifactId>
+  <packaging>app-client</packaging>
+
+  <name>Maven ACR Plugin :: Integration test 02 App client</name>
+  <description>Generates a simple application client to be used as a 
dependency</description>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+
+</project>

Added: 
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/main/java/org/apache/maven/plugin/acr/it/it02/SampleApp.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/main/java/org/apache/maven/plugin/acr/it/it02/SampleApp.java?rev=1083681&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/main/java/org/apache/maven/plugin/acr/it/it02/SampleApp.java
 (added)
+++ 
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/main/java/org/apache/maven/plugin/acr/it/it02/SampleApp.java
 Mon Mar 21 06:10:23 2011
@@ -0,0 +1,12 @@
+package org.apache.maven.plugin.acr.it.it02;
+
+
+public class SampleApp
+{
+
+    public String sayHello( String t )
+    {
+        return "Hello " + t;
+    }
+
+}
\ No newline at end of file

Added: 
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/main/resources/META-INF/application-client.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/main/resources/META-INF/application-client.xml?rev=1083681&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/main/resources/META-INF/application-client.xml
 (added)
+++ 
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/app-client/src/main/resources/META-INF/application-client.xml
 Mon Mar 21 06:10:23 2011
@@ -0,0 +1,15 @@
+<application-client xmlns="http://java.sun.com/xml/ns/j2ee";
+                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+                    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
+                    http://java.sun.com/xml/ns/j2ee/application-client_1_4.xsd";
+                    version="1.4">
+
+  <display-name>A sample app client</display-name>
+
+  <env-entry>
+    <env-entry-name>myKey</env-entry-name>
+    <env-entry-type>java.lang.String</env-entry-type>
+    <env-entry-value>myValue</env-entry-value>
+  </env-entry>
+
+</application-client>
\ No newline at end of file

Added: maven/plugins/trunk/maven-acr-plugin/src/it/it-02/bundle/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-acr-plugin/src/it/it-02/bundle/pom.xml?rev=1083681&view=auto
==============================================================================
--- maven/plugins/trunk/maven-acr-plugin/src/it/it-02/bundle/pom.xml (added)
+++ maven/plugins/trunk/maven-acr-plugin/src/it/it-02/bundle/pom.xml Mon Mar 21 
06:10:23 2011
@@ -0,0 +1,49 @@
+<?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>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.plugin</groupId>
+    <artifactId>maven-acr-plugin-it02</artifactId>
+    <version>1.0</version>
+    <relativePath>../pom.xml</relativePath>
+  </parent>
+  <artifactId>maven-acr-plugin-it02-bundle</artifactId>
+  <packaging>app-client</packaging>
+
+  <name>Maven ACR Plugin :: Integration test 02 Bundle</name>
+  <description>Generates a simple application client to be used as a 
dependency</description>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.plugin</groupId>
+      <artifactId>maven-acr-plugin-it02-app-client</artifactId>
+      <version>1.0</version>
+      <type>app-client</type>
+    </dependency>
+  </dependencies>
+
+</project>

Added: 
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/bundle/src/main/java/org/apache/maven/plugin/acr/it/it02/DependencyTest.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-acr-plugin/src/it/it-02/bundle/src/main/java/org/apache/maven/plugin/acr/it/it02/DependencyTest.java?rev=1083681&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/bundle/src/main/java/org/apache/maven/plugin/acr/it/it02/DependencyTest.java
 (added)
+++ 
maven/plugins/trunk/maven-acr-plugin/src/it/it-02/bundle/src/main/java/org/apache/maven/plugin/acr/it/it02/DependencyTest.java
 Mon Mar 21 06:10:23 2011
@@ -0,0 +1,20 @@
+package org.apache.maven.plugin.acr.it.it02;
+
+
+public class DependencyTest
+{
+
+    private final SampleApp sampleApp;
+
+    public DependencyTest( SampleApp sampleApp )
+    {
+        this.sampleApp = sampleApp;
+    }
+
+
+    public String doIt( String t )
+    {
+        return sampleApp.sayHello( t );
+    }
+
+}
\ No newline at end of file

Added: maven/plugins/trunk/maven-acr-plugin/src/it/it-02/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-acr-plugin/src/it/it-02/pom.xml?rev=1083681&view=auto
==============================================================================
--- maven/plugins/trunk/maven-acr-plugin/src/it/it-02/pom.xml (added)
+++ maven/plugins/trunk/maven-acr-plugin/src/it/it-02/pom.xml Mon Mar 21 
06:10:23 2011
@@ -0,0 +1,52 @@
+<?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>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.plugin</groupId>
+  <artifactId>maven-acr-plugin-it02</artifactId>
+  <version>1.0</version>
+  <packaging>pom</packaging>
+
+  <name>Maven ACR Plugin :: Integration test 02</name>
+  <description>Test that dependencies work</description>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+
+  <modules>
+    <module>app-client</module>
+    <module>bundle</module>
+  </modules>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-acr-plugin</artifactId>
+        <version>@project.version@</version>
+        <extensions>true</extensions>
+      </plugin>
+    </plugins>
+  </build>
+</project>

Added: maven/plugins/trunk/maven-acr-plugin/src/it/it-02/verify.bsh
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-acr-plugin/src/it/it-02/verify.bsh?rev=1083681&view=auto
==============================================================================
--- maven/plugins/trunk/maven-acr-plugin/src/it/it-02/verify.bsh (added)
+++ maven/plugins/trunk/maven-acr-plugin/src/it/it-02/verify.bsh Mon Mar 21 
06:10:23 2011
@@ -0,0 +1,61 @@
+import java.io.*;
+import java.util.*;
+import java.util.jar.*;
+import java.util.regex.*;
+
+try
+{
+    File jarFile = new File( basedir, 
"app-client/target/maven-acr-plugin-it02-app-client-1.0.jar" );
+    System.out.println( "Checking for existence of " + jarFile );
+    if ( !jarFile.isFile() )
+    {
+        System.out.println( "FAILURE!" );
+        return false;
+    }
+
+    JarFile jar = new JarFile( jarFile );
+
+    String[] includedEntries = {
+        "META-INF/application-client.xml",
+        "org/apache/maven/plugin/acr/it/it02/SampleApp.class",
+    };
+    for ( String included : includedEntries )
+    {
+        System.out.println( "Checking for existence of " + included );
+        if ( jar.getEntry( included ) == null )
+        {
+            System.out.println( "FAILURE!" );
+            return false;
+        }
+    }
+
+    jar.close();
+
+    File bundleJarFile = new File( basedir, 
"bundle/target/maven-acr-plugin-it02-bundle-1.0.jar" );
+    JarFile bundle = new JarFile( bundleJarFile );
+
+
+    String[] includedBundleEntries = {
+        "org/apache/maven/plugin/acr/it/it02/DependencyTest.class",
+    };
+    for ( String included : includedBundleEntries )
+    {
+        System.out.println( "Checking for existence of " + included );
+        if ( bundle.getEntry( included ) == null )
+        {
+            System.out.println( "FAILURE!" );
+            return false;
+        }
+    }
+
+    bundle.close();
+
+
+}
+catch( Throwable t )
+{
+    t.printStackTrace();
+    return false;
+}
+
+return true;

Added: maven/plugins/trunk/maven-acr-plugin/src/it/it-03/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-acr-plugin/src/it/it-03/pom.xml?rev=1083681&view=auto
==============================================================================
--- maven/plugins/trunk/maven-acr-plugin/src/it/it-03/pom.xml (added)
+++ maven/plugins/trunk/maven-acr-plugin/src/it/it-03/pom.xml Mon Mar 21 
06:10:23 2011
@@ -0,0 +1,47 @@
+<?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>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.plugin</groupId>
+  <artifactId>maven-acr-plugin-it03</artifactId>
+  <version>1.0</version>
+  <packaging>app-client</packaging>
+
+  <name>Maven ACR Plugin :: Integration test 03</name>
+  <description>Test custom excludes does not add the application-client.xml 
twice in the archive</description>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-acr-plugin</artifactId>
+        <version>@project.version@</version>
+        <extensions>true</extensions>
+      </plugin>
+    </plugins>
+  </build>
+</project>

Added: 
maven/plugins/trunk/maven-acr-plugin/src/it/it-03/src/main/resources/META-INF/application-client.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-acr-plugin/src/it/it-03/src/main/resources/META-INF/application-client.xml?rev=1083681&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-acr-plugin/src/it/it-03/src/main/resources/META-INF/application-client.xml
 (added)
+++ 
maven/plugins/trunk/maven-acr-plugin/src/it/it-03/src/main/resources/META-INF/application-client.xml
 Mon Mar 21 06:10:23 2011
@@ -0,0 +1,15 @@
+<application-client xmlns="http://java.sun.com/xml/ns/j2ee";
+                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+                    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
+                    http://java.sun.com/xml/ns/j2ee/application-client_1_4.xsd";
+                    version="1.4">
+
+  <display-name>A sample app client</display-name>
+
+  <env-entry>
+    <env-entry-name>myKey</env-entry-name>
+    <env-entry-type>java.lang.String</env-entry-type>
+    <env-entry-value>myValue</env-entry-value>
+  </env-entry>
+
+</application-client>
\ No newline at end of file

Copied: maven/plugins/trunk/maven-acr-plugin/src/it/it-03/verify.bsh (from 
r1081277, 
maven/plugins/trunk/maven-ejb-plugin/src/it/mejb-34-filtered/verify.bsh)
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-acr-plugin/src/it/it-03/verify.bsh?p2=maven/plugins/trunk/maven-acr-plugin/src/it/it-03/verify.bsh&p1=maven/plugins/trunk/maven-ejb-plugin/src/it/mejb-34-filtered/verify.bsh&r1=1081277&r2=1083681&rev=1083681&view=diff
==============================================================================
--- maven/plugins/trunk/maven-ejb-plugin/src/it/mejb-34-filtered/verify.bsh 
(original)
+++ maven/plugins/trunk/maven-acr-plugin/src/it/it-03/verify.bsh Mon Mar 21 
06:10:23 2011
@@ -1,53 +1,37 @@
 import java.io.*;
 import java.util.*;
-import java.util.jar.*;
+import java.util.zip.*;
 import java.util.regex.*;
-import java.util.zip.ZipEntry;
-import org.codehaus.plexus.util.IOUtil;
 
-try
+File jarFile = new File( basedir, "target/maven-acr-plugin-it03-1.0.jar" );
+System.out.println( "Checking for existence of " + jarFile );
+if ( !jarFile.isFile() )
 {
-    File file = new File( basedir, "target/mejb-34-filtered-1.0.jar" );
-    System.out.println( "Checking for existence of " + file );
-    if ( !file.isFile() )
-    {
-        System.out.println( "FAILURE! Missing JAR file" );
-        return false;
-    }
+    throw new FileNotFoundException( "Missing " + jarFile );
+}
+
+ZipInputStream zis = new ZipInputStream( new FileInputStream( jarFile ) );
 
-    JarFile jarFile = new JarFile( file );
+int count = 0;
 
-    ZipEntry zipEntry = jarFile.getEntry( "META-INF/ejb-jar.xml" );
-    if ( zipEntry == null )
+while (true)
+{
+    ZipEntry entry = zis.getNextEntry();
+    if ( entry == null )
     {
-        System.out.println( "FAILURE! Missing META-INF/ejb-jar.xml in the JAR 
file" );
-        return false;
+        break;
     }
-    else
+    if ( entry.getName().equals( "META-INF/application-client.xml" ) )
     {
-        InputStream is = jarFile.getInputStream( zipEntry );
-        String contents = IOUtil.toString ( is, "UTF-8" );
-        int index = contents.indexOf( "myKey" );
-        if ( index >= 0 )
-        {
-            System.out.println( "FAILURE! The key 'myKey' has not been 
replaced during filtering" );
-            return false;
-        }
-        index = contents.indexOf( "myValue" );
-        if ( index < 0 )
-        {
-            System.out.println( "FAILURE! The value 'myValue' has not been 
injected during filtering" );
-            return false;
-        }
-        is.close();
+        count++;
     }
-
-    jarFile.close();
 }
-catch( Throwable t )
+
+zis.close();
+
+if ( count != 1 )
 {
-    t.printStackTrace();
-    return false;
+    throw new IllegalStateException( "Wrong number of application-client.xml's 
in archive: " + count );
 }
 
 return true;

Added: maven/plugins/trunk/maven-acr-plugin/src/it/it-04/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-acr-plugin/src/it/it-04/pom.xml?rev=1083681&view=auto
==============================================================================
--- maven/plugins/trunk/maven-acr-plugin/src/it/it-04/pom.xml (added)
+++ maven/plugins/trunk/maven-acr-plugin/src/it/it-04/pom.xml Mon Mar 21 
06:10:23 2011
@@ -0,0 +1,51 @@
+<?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>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.plugin</groupId>
+  <artifactId>maven-acr-plugin-it04</artifactId>
+  <version>1.0</version>
+  <packaging>app-client</packaging>
+
+  <name>Maven ACR Plugin :: Integration test 04</name>
+  <description>Test filtering</description>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <it04.key.value>it04-success</it04.key.value>
+  </properties>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-acr-plugin</artifactId>
+        <version>@project.version@</version>
+        <extensions>true</extensions>
+        <configuration>
+          <filterDeploymentDescriptor>true</filterDeploymentDescriptor>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>

Added: 
maven/plugins/trunk/maven-acr-plugin/src/it/it-04/src/main/resources/META-INF/application-client.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-acr-plugin/src/it/it-04/src/main/resources/META-INF/application-client.xml?rev=1083681&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-acr-plugin/src/it/it-04/src/main/resources/META-INF/application-client.xml
 (added)
+++ 
maven/plugins/trunk/maven-acr-plugin/src/it/it-04/src/main/resources/META-INF/application-client.xml
 Mon Mar 21 06:10:23 2011
@@ -0,0 +1,15 @@
+<application-client xmlns="http://java.sun.com/xml/ns/j2ee";
+                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+                    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
+                    http://java.sun.com/xml/ns/j2ee/application-client_1_4.xsd";
+                    version="1.4">
+
+  <display-name>A sample app client</display-name>
+
+  <env-entry>
+    <env-entry-name>myKey</env-entry-name>
+    <env-entry-type>java.lang.String</env-entry-type>
+    <env-entry-value>${it04.key.value}</env-entry-value>
+  </env-entry>
+
+</application-client>
\ No newline at end of file

Copied: maven/plugins/trunk/maven-acr-plugin/src/it/it-04/verify.bsh (from 
r1081277, 
maven/plugins/trunk/maven-ejb-plugin/src/it/mejb-34-filtered/verify.bsh)
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-acr-plugin/src/it/it-04/verify.bsh?p2=maven/plugins/trunk/maven-acr-plugin/src/it/it-04/verify.bsh&p1=maven/plugins/trunk/maven-ejb-plugin/src/it/mejb-34-filtered/verify.bsh&r1=1081277&r2=1083681&rev=1083681&view=diff
==============================================================================
--- maven/plugins/trunk/maven-ejb-plugin/src/it/mejb-34-filtered/verify.bsh 
(original)
+++ maven/plugins/trunk/maven-acr-plugin/src/it/it-04/verify.bsh Mon Mar 21 
06:10:23 2011
@@ -7,7 +7,7 @@ import org.codehaus.plexus.util.IOUtil;
 
 try
 {
-    File file = new File( basedir, "target/mejb-34-filtered-1.0.jar" );
+    File file = new File( basedir, "target/maven-acr-plugin-it04-1.0.jar" );
     System.out.println( "Checking for existence of " + file );
     if ( !file.isFile() )
     {
@@ -17,26 +17,26 @@ try
 
     JarFile jarFile = new JarFile( file );
 
-    ZipEntry zipEntry = jarFile.getEntry( "META-INF/ejb-jar.xml" );
+    ZipEntry zipEntry = jarFile.getEntry( "META-INF/application-client.xml" );
     if ( zipEntry == null )
     {
-        System.out.println( "FAILURE! Missing META-INF/ejb-jar.xml in the JAR 
file" );
+        System.out.println( "FAILURE! Missing META-INF/application-client.xml 
in the JAR file" );
         return false;
     }
     else
     {
         InputStream is = jarFile.getInputStream( zipEntry );
         String contents = IOUtil.toString ( is, "UTF-8" );
-        int index = contents.indexOf( "myKey" );
+        int index = contents.indexOf( "it04.key.value" );
         if ( index >= 0 )
         {
-            System.out.println( "FAILURE! The key 'myKey' has not been 
replaced during filtering" );
+            System.out.println( "FAILURE! The key 'it04.key.value' has not 
been replaced during filtering" );
             return false;
         }
-        index = contents.indexOf( "myValue" );
+        index = contents.indexOf( "it04-success" );
         if ( index < 0 )
         {
-            System.out.println( "FAILURE! The value 'myValue' has not been 
injected during filtering" );
+            System.out.println( "FAILURE! The value 'it04-success' has not 
been injected during filtering" );
             return false;
         }
         is.close();

Added: 
maven/plugins/trunk/maven-acr-plugin/src/main/java/org/apache/maven/plugin/acr/AcrMojo.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-acr-plugin/src/main/java/org/apache/maven/plugin/acr/AcrMojo.java?rev=1083681&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-acr-plugin/src/main/java/org/apache/maven/plugin/acr/AcrMojo.java
 (added)
+++ 
maven/plugins/trunk/maven-acr-plugin/src/main/java/org/apache/maven/plugin/acr/AcrMojo.java
 Mon Mar 21 06:10:23 2011
@@ -0,0 +1,295 @@
+package org.apache.maven.plugin.acr;
+
+/*
+ * 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.archiver.MavenArchiveConfiguration;
+import org.apache.maven.archiver.MavenArchiver;
+import org.apache.maven.artifact.DependencyResolutionRequiredException;
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.filtering.MavenFileFilter;
+import org.apache.maven.shared.filtering.MavenFilteringException;
+import org.apache.maven.shared.filtering.MavenResourcesExecution;
+import org.codehaus.plexus.archiver.ArchiverException;
+import org.codehaus.plexus.archiver.jar.JarArchiver;
+import org.codehaus.plexus.archiver.jar.ManifestException;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.xml.XmlStreamReader;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * Build a JEE Application Client jar file from the current project.
+ *
+ * @author <a href="pa...@anahata-it.com">Pablo Rodriguez</a>
+ * @author <a href="snic...@apache.org">Stephane Nicoll</a>
+ * @version $Id:
+ * @goal acr
+ * @requiresDependencyResolution runtime
+ * @threadSafe
+ * @phase package
+ */
+public class AcrMojo
+    extends AbstractMojo
+{
+
+    private static final String APP_CLIENT_XML = 
"META-INF/application-client.xml";
+
+    // TODO: will null work instead?
+    private static final String[] DEFAULT_INCLUDES = new String[]{ "**/**" };
+
+    private static final String[] DEFAULT_EXCLUDES = new String[]{ 
APP_CLIENT_XML };
+
+    private static final String[] EMPTY_STRING_ARRAY = new String[0];
+
+    /**
+     * The directory for the generated jar.
+     *
+     * @parameter default-value="${project.build.directory}"
+     * @required
+     * @readonly
+     */
+    private File basedir;
+
+    /**
+     * Directory that resources are copied to during the build.
+     *
+     * @parameter default-value="${project.build.outputDirectory}" 
expression="${outputDirectory}"
+     */
+    private File outputDirectory;
+
+    /**
+     * The name of the Application client JAR file to generate.
+     *
+     * @parameter default-value="${project.build.finalName}" 
expression="${jarName}"
+     */
+    private String jarName;
+
+    /**
+     * The files and directories to exclude from the main Application Client 
jar. Usage:
+     * <p/>
+     * <pre>
+     * &lt;excludes&gt;
+     *   &lt;exclude&gt;**&#47;*DevOnly.class&lt;&#47;exclude&gt;
+     * &lt;&#47;excludes&gt;
+     * </pre>
+     * <br/>Default exclusions: META-INF&#47;application-client.xml,
+     *
+     * @parameter
+     */
+    private List excludes;
+
+    /**
+     * The Maven project.
+     *
+     * @parameter default-value="${project}"
+     * @required
+     * @readonly
+     */
+    private MavenProject project;
+
+    /**
+     * The Jar archiver.
+     *
+     * @component role="org.codehaus.plexus.archiver.Archiver" roleHint="jar"
+     */
+    private JarArchiver jarArchiver;
+
+    /**
+     * The archive configuration to use.
+     * See <a 
href="http://maven.apache.org/shared/maven-archiver/index.html";>Maven Archiver 
Reference</a>.
+     *
+     * @parameter
+     */
+    private MavenArchiveConfiguration archive = new 
MavenArchiveConfiguration();
+
+    /**
+     * To escape interpolated value with windows path.
+     * c:\foo\bar will be replaced with c:\\foo\\bar.
+     *
+     * @parameter default-value="false" 
expression="${acr.escapeBackslashesInFilePath}"
+     */
+    private boolean escapeBackslashesInFilePath;
+
+    /**
+     * An expression preceded with this String won't be interpolated.
+     * \${foo} will be replaced with ${foo}.
+     *
+     * @parameter expression="${car.escapeString}"
+     */
+    protected String escapeString;
+
+    /**
+     * To filter the deployment descriptor.
+     *
+     * @parameter default-value="false" 
expression="${acr.filterDeploymentDescriptor}"
+     */
+    private boolean filterDeploymentDescriptor;
+
+    /**
+     * Filters (properties files) to include during the interpolation of the 
deployment descriptor.
+     *
+     * @parameter
+     */
+    private List filters;
+
+    /**
+     * @component role="org.apache.maven.shared.filtering.MavenFileFilter" 
role-hint="default"
+     * @required
+     */
+    private MavenFileFilter mavenFileFilter;
+
+    /**
+     * @parameter expression="${session}"
+     * @readonly
+     * @required
+     */
+    private MavenSession session;
+
+    /**
+     * Generates the application client jar file
+     *
+     * @todo Add license files in META-INF directory.
+     */
+    public void execute()
+        throws MojoExecutionException
+    {
+        if ( getLog().isInfoEnabled() )
+        {
+            getLog().info( "Building JavaEE Application client: " + jarName );
+        }
+
+        File jarFile = getAppClientJarFile( basedir, jarName );
+
+        MavenArchiver archiver = new MavenArchiver();
+
+        archiver.setArchiver( jarArchiver );
+
+        archiver.setOutputFile( jarFile );
+
+        File deploymentDescriptor = new File( outputDirectory, APP_CLIENT_XML 
);
+        try
+        {
+            String[] mainJarExcludes = DEFAULT_EXCLUDES;
+
+            if ( excludes != null && !excludes.isEmpty() )
+            {
+                excludes.add( APP_CLIENT_XML );
+                mainJarExcludes = (String[]) excludes.toArray( 
EMPTY_STRING_ARRAY );
+            }
+
+            if ( !outputDirectory.exists() )
+            {
+                getLog().info(
+                    "JAR will only contain the META-INF/application-client.xml 
as no content was marked for inclusion" );
+            }
+            else
+            {
+                archiver.getArchiver().addDirectory( outputDirectory, 
DEFAULT_INCLUDES, mainJarExcludes );
+            }
+
+            if ( deploymentDescriptor.exists() )
+            {
+                if ( filterDeploymentDescriptor )
+                {
+                    getLog().debug( "Filtering deployment descriptor." );
+                    MavenResourcesExecution mavenResourcesExecution = new 
MavenResourcesExecution();
+                    mavenResourcesExecution.setEscapeString( escapeString );
+                    List filterWrappers =
+                        mavenFileFilter.getDefaultFilterWrappers( project, 
filters, escapeBackslashesInFilePath,
+                                                                  
this.session, mavenResourcesExecution );
+
+                    // Create a temporary file that we can copy-and-filter
+                    File unfilteredDeploymentDescriptor = new File( 
outputDirectory, APP_CLIENT_XML + ".unfiltered" );
+                    FileUtils.copyFile( deploymentDescriptor, 
unfilteredDeploymentDescriptor );
+                    mavenFileFilter.copyFile( unfilteredDeploymentDescriptor, 
deploymentDescriptor, true,
+                                              filterWrappers, getEncoding( 
unfilteredDeploymentDescriptor ) );
+                    // Remove the temporary file
+                    FileUtils.forceDelete( unfilteredDeploymentDescriptor );
+                }
+                archiver.getArchiver().addFile( deploymentDescriptor, 
APP_CLIENT_XML );
+            }
+
+            // create archive
+            archiver.createArchive( project, archive );
+        }
+        catch ( ArchiverException e )
+        {
+            throw new MojoExecutionException(
+                "There was a problem creating the JavaEE Application Client  
archive: " + e.getMessage(), e );
+        }
+        catch ( ManifestException e )
+        {
+            throw new MojoExecutionException(
+                "There was a problem reading / creating the manifest for the 
JavaEE Application Client  archive: " +
+                    e.getMessage(), e );
+        }
+        catch ( IOException e )
+        {
+            throw new MojoExecutionException(
+                "There was a I/O problem creating the JavaEE Application 
Client archive: " + e.getMessage(), e );
+        }
+        catch ( DependencyResolutionRequiredException e )
+        {
+            throw new MojoExecutionException(
+                "There was a problem resolving dependencies while creating the 
JavaEE Application Client archive: " +
+                    e.getMessage(), e );
+        }
+        catch ( MavenFilteringException e )
+        {
+            throw new MojoExecutionException(
+                "There was a problem filtering the deployment descriptor: " + 
e.getMessage(), e );
+        }
+
+        project.getArtifact().setFile( jarFile );
+
+
+    }
+
+    /**
+     * Returns the App-client Jar file to generate.
+     *
+     * @param basedir   the output directory
+     * @param finalName the name of the ear file
+     * @return the Application client JAR file to generate
+     */
+    private static File getAppClientJarFile( File basedir, String finalName )
+    {
+        return new File( basedir, finalName + ".jar" );
+    }
+
+    /**
+     * Get the encoding from an XML-file.
+     *
+     * @param xmlFile the XML-file
+     * @return The encoding of the XML-file, or UTF-8 if it's not specified in 
the file
+     * @throws IOException if an error occurred while reading the file
+     */
+    private String getEncoding( File xmlFile )
+        throws IOException
+    {
+        XmlStreamReader xmlReader = new XmlStreamReader( xmlFile );
+        return xmlReader.getEncoding();
+    }
+}

Added: 
maven/plugins/trunk/maven-acr-plugin/src/main/resources/META-INF/plexus/components.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-acr-plugin/src/main/resources/META-INF/plexus/components.xml?rev=1083681&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-acr-plugin/src/main/resources/META-INF/plexus/components.xml
 (added)
+++ 
maven/plugins/trunk/maven-acr-plugin/src/main/resources/META-INF/plexus/components.xml
 Mon Mar 21 06:10:23 2011
@@ -0,0 +1,59 @@
+<?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.
+ */-->
+<component-set>
+  <components>
+    <component>
+      <role>org.apache.maven.artifact.handler.ArtifactHandler</role>
+      <role-hint>app-client</role-hint>
+      
<implementation>org.apache.maven.artifact.handler.DefaultArtifactHandler</implementation>
+      <configuration>
+        <type>app-client</type>
+        <extension>jar</extension>
+        <packaging>jar</packaging>
+        <language>java</language>
+        <addedToClasspath>true</addedToClasspath>
+      </configuration>
+    </component>
+    <component>
+      <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
+      <role-hint>app-client</role-hint>
+      
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
+      <configuration>
+        <lifecycles>
+          <lifecycle>
+            <id>default</id>
+            <phases>
+              
<process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>
+              
<compile>org.apache.maven.plugins:maven-compiler-plugin:compile</compile>
+              
<process-test-resources>org.apache.maven.plugins:maven-resources-plugin:testResources
+              </process-test-resources>
+              
<test-compile>org.apache.maven.plugins:maven-compiler-plugin:testCompile</test-compile>
+              <test>org.apache.maven.plugins:maven-surefire-plugin:test</test>
+              <package>org.apache.maven.plugins:maven-acr-plugin:acr</package>
+              
<install>org.apache.maven.plugins:maven-install-plugin:install</install>
+              
<deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>
+            </phases>
+          </lifecycle>
+        </lifecycles>
+      </configuration>
+    </component>
+  </components>
+</component-set>
\ No newline at end of file

Modified: maven/plugins/trunk/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/pom.xml?rev=1083681&r1=1083680&r2=1083681&view=diff
==============================================================================
--- maven/plugins/trunk/pom.xml (original)
+++ maven/plugins/trunk/pom.xml Mon Mar 21 06:10:23 2011
@@ -37,6 +37,7 @@ under the License.
 
   <modules>
     <module>maven-plugins</module>
+    <module>maven-acr-plugin</module>
     <module>maven-ant-plugin</module>
     <module>maven-antrun-plugin</module>
 


Reply via email to