You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by br...@apache.org on 2005/10/03 05:54:18 UTC

svn commit: r293227 - in /maven/components/trunk: maven-artifact/src/main/resources/META-INF/plexus/ maven-core-it-verifier/src/main/java/org/apache/maven/it/ maven-core-it/ maven-core-it/it0077/ maven-core-it/it0077/sub1/ maven-core-it/it0077/sub1/src...

Author: brett
Date: Sun Oct  2 20:53:48 2005
New Revision: 293227

URL: http://svn.apache.org/viewcvs?rev=293227&view=rev
Log:
PR: MNG-932
add a goal for creating a jar from the test sources

Added:
    maven/components/trunk/maven-core-it/it0077/   (with props)
    maven/components/trunk/maven-core-it/it0077/cli-options.txt   (with props)
    maven/components/trunk/maven-core-it/it0077/expected-results.txt   (with props)
    maven/components/trunk/maven-core-it/it0077/goals.txt   (with props)
    maven/components/trunk/maven-core-it/it0077/pom.xml   (with props)
    maven/components/trunk/maven-core-it/it0077/prebuild-hook.txt   (with props)
    maven/components/trunk/maven-core-it/it0077/settings.xml   (with props)
    maven/components/trunk/maven-core-it/it0077/sub1/   (with props)
    maven/components/trunk/maven-core-it/it0077/sub1/pom.xml   (with props)
    maven/components/trunk/maven-core-it/it0077/sub1/src/
    maven/components/trunk/maven-core-it/it0077/sub1/src/main/
    maven/components/trunk/maven-core-it/it0077/sub1/src/main/java/
    maven/components/trunk/maven-core-it/it0077/sub1/src/main/java/org/
    maven/components/trunk/maven-core-it/it0077/sub1/src/main/java/org/apache/
    maven/components/trunk/maven-core-it/it0077/sub1/src/main/java/org/apache/maven/
    maven/components/trunk/maven-core-it/it0077/sub1/src/main/java/org/apache/maven/it0077/
    maven/components/trunk/maven-core-it/it0077/sub1/src/main/java/org/apache/maven/it0077/Person.java   (with props)
    maven/components/trunk/maven-core-it/it0077/sub1/src/test/
    maven/components/trunk/maven-core-it/it0077/sub1/src/test/java/
    maven/components/trunk/maven-core-it/it0077/sub1/src/test/java/org/
    maven/components/trunk/maven-core-it/it0077/sub1/src/test/java/org/apache/
    maven/components/trunk/maven-core-it/it0077/sub1/src/test/java/org/apache/maven/
    maven/components/trunk/maven-core-it/it0077/sub1/src/test/java/org/apache/maven/it0077/
    maven/components/trunk/maven-core-it/it0077/sub1/src/test/java/org/apache/maven/it0077/PersonTest.java   (with props)
    maven/components/trunk/maven-core-it/it0077/sub2/   (with props)
    maven/components/trunk/maven-core-it/it0077/sub2/pom.xml   (with props)
    maven/components/trunk/maven-core-it/it0077/sub2/src/
    maven/components/trunk/maven-core-it/it0077/sub2/src/test/
    maven/components/trunk/maven-core-it/it0077/sub2/src/test/java/
    maven/components/trunk/maven-core-it/it0077/sub2/src/test/java/org/
    maven/components/trunk/maven-core-it/it0077/sub2/src/test/java/org/apache/
    maven/components/trunk/maven-core-it/it0077/sub2/src/test/java/org/apache/maven/
    maven/components/trunk/maven-core-it/it0077/sub2/src/test/java/org/apache/maven/it0077/
    maven/components/trunk/maven-core-it/it0077/sub2/src/test/java/org/apache/maven/it0077/PersonTwoTest.java   (with props)
    maven/components/trunk/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar/AbstractJarMojo.java   (with props)
    maven/components/trunk/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar/TestJarMojo.java   (with props)
Modified:
    maven/components/trunk/maven-artifact/src/main/resources/META-INF/plexus/components.xml
    maven/components/trunk/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java
    maven/components/trunk/maven-core-it/README.txt
    maven/components/trunk/maven-core-it/integration-tests.txt
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    maven/components/trunk/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar/JarMojo.java

Modified: maven/components/trunk/maven-artifact/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/resources/META-INF/plexus/components.xml?rev=293227&r1=293226&r2=293227&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/components/trunk/maven-artifact/src/main/resources/META-INF/plexus/components.xml Sun Oct  2 20:53:48 2005
@@ -52,7 +52,7 @@
       <role-hint>test-jar</role-hint>
       <implementation>org.apache.maven.artifact.handler.DefaultArtifactHandler</implementation>
       <configuration>
-        <classifier>test</classifier>
+        <classifier>tests</classifier>
         <extension>jar</extension>
         <type>test-jar</type>
         <packaging>jar</packaging>

Modified: maven/components/trunk/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java?rev=293227&r1=293226&r2=293227&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java (original)
+++ maven/components/trunk/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java Sun Oct  2 20:53:48 2005
@@ -308,6 +308,11 @@
             ext = "jar";
             classifier = "it";
         }
+        if ( "test-jar".equals( a[3] ) )
+        {
+            ext = "jar";
+            classifier = "tests";
+        }
 
         String repositoryPath;
         if ( "legacy".equals( localRepoLayout ) )

Modified: maven/components/trunk/maven-core-it/README.txt
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/README.txt?rev=293227&r1=293226&r2=293227&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it/README.txt (original)
+++ maven/components/trunk/maven-core-it/README.txt Sun Oct  2 20:53:48 2005
@@ -204,6 +204,8 @@
         unless they are referenced by groupId/artifactId within the plugins
         section of a pom.
 
+it0077: Test test jar attachment.
+
 -------------------------------------------------------------------------------
 
 - generated sources

Modified: maven/components/trunk/maven-core-it/integration-tests.txt
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/integration-tests.txt?rev=293227&r1=293226&r2=293227&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it/integration-tests.txt (original)
+++ maven/components/trunk/maven-core-it/integration-tests.txt Sun Oct  2 20:53:48 2005
@@ -1,3 +1,4 @@
+it0077
 it0076
 it0075
 it0074

Propchange: maven/components/trunk/maven-core-it/it0077/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sun Oct  2 20:53:48 2005
@@ -0,0 +1,2 @@
+log.txt
+target

Added: maven/components/trunk/maven-core-it/it0077/cli-options.txt
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0077/cli-options.txt?rev=293227&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0077/cli-options.txt (added)
+++ maven/components/trunk/maven-core-it/it0077/cli-options.txt Sun Oct  2 20:53:48 2005
@@ -0,0 +1 @@
+--settings settings.xml

Propchange: maven/components/trunk/maven-core-it/it0077/cli-options.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core-it/it0077/cli-options.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-core-it/it0077/expected-results.txt
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0077/expected-results.txt?rev=293227&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0077/expected-results.txt (added)
+++ maven/components/trunk/maven-core-it/it0077/expected-results.txt Sun Oct  2 20:53:48 2005
@@ -0,0 +1 @@
+${artifact:org.apache.maven.it:maven-it0077-sub1:1.0:test-jar}

Propchange: maven/components/trunk/maven-core-it/it0077/expected-results.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core-it/it0077/expected-results.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-core-it/it0077/goals.txt
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0077/goals.txt?rev=293227&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0077/goals.txt (added)
+++ maven/components/trunk/maven-core-it/it0077/goals.txt Sun Oct  2 20:53:48 2005
@@ -0,0 +1 @@
+install

Propchange: maven/components/trunk/maven-core-it/it0077/goals.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core-it/it0077/goals.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-core-it/it0077/pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0077/pom.xml?rev=293227&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0077/pom.xml (added)
+++ maven/components/trunk/maven-core-it/it0077/pom.xml Sun Oct  2 20:53:48 2005
@@ -0,0 +1,28 @@
+<model>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.it</groupId>
+  <artifactId>maven-core-it0077</artifactId>
+  <packaging>pom</packaging>
+  <version>1.0</version>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <type>jar</type>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <modules>
+    <module>sub1</module>
+    <module>sub2</module>
+  </modules>
+
+  <repositories>
+    <repository>
+      <id>test</id>
+      <url>file:target/test-repo</url>
+    </repository>
+  </repositories>
+</model>

Propchange: maven/components/trunk/maven-core-it/it0077/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core-it/it0077/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-core-it/it0077/prebuild-hook.txt
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0077/prebuild-hook.txt?rev=293227&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0077/prebuild-hook.txt (added)
+++ maven/components/trunk/maven-core-it/it0077/prebuild-hook.txt Sun Oct  2 20:53:48 2005
@@ -0,0 +1 @@
+rm ${artifact:org.apache.maven.it:maven-it0077-sub1:1.0:test-jar}

Propchange: maven/components/trunk/maven-core-it/it0077/prebuild-hook.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core-it/it0077/prebuild-hook.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-core-it/it0077/settings.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0077/settings.xml?rev=293227&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0077/settings.xml (added)
+++ maven/components/trunk/maven-core-it/it0077/settings.xml Sun Oct  2 20:53:48 2005
@@ -0,0 +1,4 @@
+<settings>
+  <localRepository>file:../target/local-repo</localRepository>
+  <usePluginRegistry>false</usePluginRegistry>
+</settings>

Propchange: maven/components/trunk/maven-core-it/it0077/settings.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core-it/it0077/settings.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Propchange: maven/components/trunk/maven-core-it/it0077/sub1/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sun Oct  2 20:53:48 2005
@@ -0,0 +1 @@
+target

Added: maven/components/trunk/maven-core-it/it0077/sub1/pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0077/sub1/pom.xml?rev=293227&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0077/sub1/pom.xml (added)
+++ maven/components/trunk/maven-core-it/it0077/sub1/pom.xml Sun Oct  2 20:53:48 2005
@@ -0,0 +1,41 @@
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.it</groupId>
+    <artifactId>maven-core-it0077</artifactId>
+    <version>1.0</version>
+  </parent>
+  <artifactId>maven-it0077-sub1</artifactId>
+  <version>1.0</version>
+  <dependencies>
+    <dependency>
+      <groupId>commons-lang</groupId>
+      <artifactId>commons-lang</artifactId>
+      <version>2.0</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <distributionManagement>
+    <repository>
+      <id>central</id>
+      <name>Test Repository</name>
+      <url>file:../target/test-repo</url>
+    </repository>
+  </distributionManagement>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>test-jar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>

Propchange: maven/components/trunk/maven-core-it/it0077/sub1/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core-it/it0077/sub1/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-core-it/it0077/sub1/src/main/java/org/apache/maven/it0077/Person.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0077/sub1/src/main/java/org/apache/maven/it0077/Person.java?rev=293227&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0077/sub1/src/main/java/org/apache/maven/it0077/Person.java (added)
+++ maven/components/trunk/maven-core-it/it0077/sub1/src/main/java/org/apache/maven/it0077/Person.java Sun Oct  2 20:53:48 2005
@@ -0,0 +1,16 @@
+package org.apache.maven.it0077;
+
+public class Person
+{
+    private String name;
+    
+    public void setName( String name )
+    {
+        this.name = name;
+    }
+    
+    public String getName()
+    {
+        return name;
+    }
+}

Propchange: maven/components/trunk/maven-core-it/it0077/sub1/src/main/java/org/apache/maven/it0077/Person.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core-it/it0077/sub1/src/main/java/org/apache/maven/it0077/Person.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-core-it/it0077/sub1/src/test/java/org/apache/maven/it0077/PersonTest.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0077/sub1/src/test/java/org/apache/maven/it0077/PersonTest.java?rev=293227&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0077/sub1/src/test/java/org/apache/maven/it0077/PersonTest.java (added)
+++ maven/components/trunk/maven-core-it/it0077/sub1/src/test/java/org/apache/maven/it0077/PersonTest.java Sun Oct  2 20:53:48 2005
@@ -0,0 +1,16 @@
+package org.apache.maven.it0077;
+
+import junit.framework.TestCase;
+
+public class PersonTest
+    extends TestCase
+{
+    public void testPerson()
+    {
+        Person person = new Person();
+        
+        person.setName( "foo" );
+        
+        assertEquals( "foo", person.getName() );
+    }
+}

Propchange: maven/components/trunk/maven-core-it/it0077/sub1/src/test/java/org/apache/maven/it0077/PersonTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core-it/it0077/sub1/src/test/java/org/apache/maven/it0077/PersonTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Propchange: maven/components/trunk/maven-core-it/it0077/sub2/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sun Oct  2 20:53:48 2005
@@ -0,0 +1 @@
+target

Added: maven/components/trunk/maven-core-it/it0077/sub2/pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0077/sub2/pom.xml?rev=293227&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0077/sub2/pom.xml (added)
+++ maven/components/trunk/maven-core-it/it0077/sub2/pom.xml Sun Oct  2 20:53:48 2005
@@ -0,0 +1,26 @@
+<model>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.it</groupId>
+    <artifactId>maven-core-it0077</artifactId>
+    <version>1.0</version>
+  </parent>
+  <artifactId>maven-it0077-sub2</artifactId>
+  <version>1.0</version>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.it</groupId>
+      <artifactId>maven-it0077-sub1</artifactId>
+      <version>1.0</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.it</groupId>
+      <artifactId>maven-it0077-sub1</artifactId>
+      <type>test-jar</type>
+      <version>1.0</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</model>

Propchange: maven/components/trunk/maven-core-it/it0077/sub2/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core-it/it0077/sub2/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-core-it/it0077/sub2/src/test/java/org/apache/maven/it0077/PersonTwoTest.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0077/sub2/src/test/java/org/apache/maven/it0077/PersonTwoTest.java?rev=293227&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0077/sub2/src/test/java/org/apache/maven/it0077/PersonTwoTest.java (added)
+++ maven/components/trunk/maven-core-it/it0077/sub2/src/test/java/org/apache/maven/it0077/PersonTwoTest.java Sun Oct  2 20:53:48 2005
@@ -0,0 +1,8 @@
+package org.apache.maven.it0077;
+
+import junit.framework.TestCase;
+
+public class PersonTwoTest
+    extends PersonTest
+{
+}

Propchange: maven/components/trunk/maven-core-it/it0077/sub2/src/test/java/org/apache/maven/it0077/PersonTwoTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core-it/it0077/sub2/src/test/java/org/apache/maven/it0077/PersonTwoTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=293227&r1=293226&r2=293227&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Sun Oct  2 20:53:48 2005
@@ -265,7 +265,11 @@
             MavenProject ref = (MavenProject) project.getProjectReferences().get( refId );
             if ( ref != null && ref.getArtifact() != null )
             {
-                pluginArtifact = new ActiveProjectArtifact( ref, pluginArtifact );
+                // TODO: if not matching, we should get the correct artifact from that project (attached)
+                if ( ref.getArtifact().getDependencyConflictId().equals( pluginArtifact.getDependencyConflictId() ) )
+                {
+                    pluginArtifact = new ActiveProjectArtifact( ref, pluginArtifact );
+                }
             }
         }
 

Added: maven/components/trunk/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar/AbstractJarMojo.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar/AbstractJarMojo.java?rev=293227&view=auto
==============================================================================
--- maven/components/trunk/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar/AbstractJarMojo.java (added)
+++ maven/components/trunk/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar/AbstractJarMojo.java Sun Oct  2 20:53:48 2005
@@ -0,0 +1,141 @@
+package org.apache.maven.plugin.jar;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed 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.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
+
+import java.io.File;
+
+/**
+ * Base class for creating a jar from project classes.
+ * 
+ * @author <a href="evenisse@apache.org">Emmanuel Venisse</a>
+ * @version $Id$
+ */
+public abstract class AbstractJarMojo
+    extends AbstractMojo
+{
+
+    private static final String[] DEFAULT_EXCLUDES = new String[]{"**/package.html"};
+
+    private static final String[] DEFAULT_INCLUDES = new String[]{"**/**"};
+
+    /**
+	 * Directory containing the generated JAR.
+     *
+     * @parameter expression="${project.build.directory}"
+     * @required
+     * @readonly
+     *
+     * @todo Change type to File
+     */
+    private String basedir;
+
+    /**
+	 * Name of the generated JAR.
+	 *
+     * @parameter alias="jarName" expression="${project.build.finalName}"
+     * @required
+     */
+    private String finalName;
+
+    /**
+	 * The maven project.
+	 *
+     * @parameter expression="${project}"
+     * @required
+     * @readonly
+     */
+    private MavenProject project;
+
+    /**
+     * The maven archiver to use.
+     *
+     * @parameter
+     */
+    private MavenArchiveConfiguration archive = new MavenArchiveConfiguration();
+    
+    /**
+     * Return the specific output directory to serve as the root for the archive.
+     */
+    protected abstract File getOutputDirectory();
+    
+    protected final MavenProject getProject()
+    {
+        return project;
+    }
+    
+    /**
+     * Overload this to produce a test-jar, for example.
+     */
+    protected String getClassifier()
+    {
+        return "";
+    }
+
+    /**
+	 * Generates the JAR.
+     *
+     * @todo Add license files in META-INF directory.
+     */
+    public File createArchive()
+        throws MojoExecutionException
+    {
+        String classifier = getClassifier();
+        
+        if ( classifier == null )
+        {
+            classifier = "";
+        }
+        else if ( classifier.trim().length() > 0 && !classifier.startsWith( "-" ) )
+        {
+            classifier = "-" + classifier;
+        }
+        
+        File jarFile = new File( basedir, finalName + classifier + ".jar" );
+
+        MavenArchiver archiver = new MavenArchiver();
+
+        archiver.setOutputFile( jarFile );
+
+        try
+        {
+            File contentDirectory = getOutputDirectory();
+            if ( !contentDirectory.exists() )
+            {
+                getLog().warn( "JAR will be empty - no content was marked for inclusion!" );
+            }
+            else
+            {
+                archiver.getArchiver().addDirectory( contentDirectory, DEFAULT_INCLUDES, DEFAULT_EXCLUDES );
+            }
+
+            archiver.createArchive( project, archive );
+            
+            return jarFile;
+        }
+        catch ( Exception e )
+        {
+            // TODO: improve error handling
+            throw new MojoExecutionException( "Error assembling JAR", e );
+        }
+    }
+}

Propchange: maven/components/trunk/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar/AbstractJarMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar/AbstractJarMojo.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/components/trunk/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar/JarMojo.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar/JarMojo.java?rev=293227&r1=293226&r2=293227&view=diff
==============================================================================
--- maven/components/trunk/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar/JarMojo.java (original)
+++ maven/components/trunk/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar/JarMojo.java Sun Oct  2 20:53:48 2005
@@ -16,11 +16,7 @@
  * limitations under the License.
  */
 
-import org.apache.maven.archiver.MavenArchiveConfiguration;
-import org.apache.maven.archiver.MavenArchiver;
-import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.project.MavenProject;
 
 import java.io.File;
 
@@ -31,35 +27,11 @@
  * @version $Id$
  * @goal jar
  * @phase package
- * @description build a jar
+ * @requiresProject
  */
 public class JarMojo
-    extends AbstractMojo
+    extends AbstractJarMojo
 {
-
-    private static final String[] DEFAULT_EXCLUDES = new String[]{"**/package.html"};
-
-    private static final String[] DEFAULT_INCLUDES = new String[]{"**/**"};
-
-    /**
-	 * Directory containing the generated JAR.
-     *
-     * @parameter expression="${project.build.directory}"
-     * @required
-     * @readonly
-     *
-     * @todo Change type to File
-     */
-    private String basedir;
-
-    /**
-	 * Name of the generated JAR.
-	 *
-     * @parameter alias="jarName" expression="${project.build.finalName}"
-     * @required
-     */
-    private String finalName;
-
     /**
 	 * Directory containing the classes.
 	 *
@@ -67,23 +39,7 @@
      * @required
      * @readonly
      */
-    private String outputDirectory;
-
-    /**
-	 * The maven project.
-	 *
-     * @parameter expression="${project}"
-     * @required
-     * @readonly
-     */
-    private MavenProject project;
-
-    /**
-     * The maven archiver to use.
-     *
-     * @parameter
-     */
-    private MavenArchiveConfiguration archive = new MavenArchiveConfiguration();
+    private File outputDirectory;
 
     /**
 	 * Generates the JAR.
@@ -93,32 +49,16 @@
     public void execute()
         throws MojoExecutionException
     {
-        File jarFile = new File( basedir, finalName + ".jar" );
-
-        MavenArchiver archiver = new MavenArchiver();
-
-        archiver.setOutputFile( jarFile );
-
-        try
-        {
-            File contentDirectory = new File( outputDirectory );
-            if ( !contentDirectory.exists() )
-            {
-                getLog().warn( "JAR will be empty - no content was marked for inclusion!" );
-            }
-            else
-            {
-                archiver.getArchiver().addDirectory( contentDirectory, DEFAULT_INCLUDES, DEFAULT_EXCLUDES );
-            }
+        File jarFile = createArchive();
+        
+        getProject().getArtifact().setFile( jarFile );
+    }
 
-            archiver.createArchive( project, archive );
-
-            project.getArtifact().setFile( jarFile );
-        }
-        catch ( Exception e )
-        {
-            // TODO: improve error handling
-            throw new MojoExecutionException( "Error assembling JAR", e );
-        }
+    /**
+     * Return the main classes directory, so it's used as the root of the jar.
+     */
+    protected File getOutputDirectory()
+    {
+        return outputDirectory;
     }
 }

Added: maven/components/trunk/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar/TestJarMojo.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar/TestJarMojo.java?rev=293227&view=auto
==============================================================================
--- maven/components/trunk/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar/TestJarMojo.java (added)
+++ maven/components/trunk/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar/TestJarMojo.java Sun Oct  2 20:53:48 2005
@@ -0,0 +1,77 @@
+package org.apache.maven.plugin.jar;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed 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.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProjectHelper;
+
+import java.io.File;
+
+/**
+ * Build a JAR of the test classes for the current project.
+ *
+ * @author <a href="evenisse@apache.org">Emmanuel Venisse</a>
+ * @version $Id$
+ * @goal test-jar
+ * @phase package
+ * @requiresProject
+ */
+public class TestJarMojo
+    extends AbstractJarMojo
+{
+    /**
+     * Directory containing the test classes.
+     *
+     * @parameter expression="${project.build.testOutputDirectory}"
+     * @required
+     * @readonly
+     */
+    private File testOutputDirectory;
+
+    /**
+     * @component role="org.apache.maven.project.MavenProjectHelper"
+     */
+    private MavenProjectHelper projectHelper;
+
+    protected String getClassifier()
+    {
+        return "tests";
+    }
+
+    /**
+     * Generates the JAR.
+     *
+     * @todo Add license files in META-INF directory.
+     */
+    public void execute()
+        throws MojoExecutionException
+    {
+        getLog().info( "Creating a jar containing the test classes for this project." );
+
+        File jarFile = createArchive();
+
+        projectHelper.attachArtifact( getProject(), "jar", "tests", jarFile );
+    }
+
+    /**
+     * Return the test-classes directory, to serve as the root of the tests jar.
+     */
+    protected File getOutputDirectory()
+    {
+        return testOutputDirectory;
+    }
+}

Propchange: maven/components/trunk/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar/TestJarMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar/TestJarMojo.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org