You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sn...@apache.org on 2010/09/05 11:49:46 UTC

svn commit: r992748 - in /maven/plugins/trunk/maven-ear-plugin/src: main/java/org/apache/maven/plugin/ear/output/ test/java/org/apache/maven/plugin/ear/ test/java/org/apache/maven/plugin/ear/output/

Author: snicoll
Date: Sun Sep  5 09:49:46 2010
New Revision: 992748

URL: http://svn.apache.org/viewvc?rev=992748&view=rev
Log:
MEAR-116: Harmonized build output be it invoked from the reactor or from the module directly, based on an initial patch made by Benjamin Bentmann.

Added:
    maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/output/AbstractFileNameMapping.java
    maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/ArtifactHandlerTestStub.java
    maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/output/AbstractFileNameMappingTest.java
    maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/output/FullFileNameMappingTest.java
    maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/output/StandardFileNameMappingTest.java
Modified:
    maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/output/FullFileNameMapping.java
    maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/output/StandardFileNameMapping.java
    maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/AbstractEarTest.java
    maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/ArtifactTestStub.java

Added: maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/output/AbstractFileNameMapping.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/output/AbstractFileNameMapping.java?rev=992748&view=auto
==============================================================================
--- maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/output/AbstractFileNameMapping.java (added)
+++ maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/output/AbstractFileNameMapping.java Sun Sep  5 09:49:46 2010
@@ -0,0 +1,61 @@
+package org.apache.maven.plugin.ear.output;
+
+import org.apache.maven.artifact.Artifact;
+
+/*
+ * 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.
+ */
+
+/**
+ * A base class used to generate the standard name of an
+ * artifact instead of relying on the (potentially) wrong
+ * file name provided by {@link org.apache.maven.artifact.Artifact#getFile()}.
+ *
+ * @author <a href="snicoll@apache.org">Stephane Nicoll</a>
+ */
+public abstract class AbstractFileNameMapping
+    implements FileNameMapping
+{
+
+
+    /**
+     * Generates a standard file name for the specified {@link Artifact}.
+     * <p/>
+     * Returns something like <tt>artifactId-version[-classifier].extension</tt>.
+     *
+     * @param a the artifact to generate a filename from
+     * @return the filename, with a standard format
+     */
+    protected String generateFileName( final Artifact a )
+    {
+        final String extension = a.getArtifactHandler().getExtension();
+
+        final StringBuilder buffer = new StringBuilder( 128 );
+        buffer.append( a.getArtifactId() ).append( '-' ).append( a.getBaseVersion() );
+        if ( a.hasClassifier() )
+        {
+            buffer.append( '-' ).append( a.getClassifier() );
+        }
+        if ( extension != null && extension.length() > 0 )
+        {
+            buffer.append( '.' ).append( extension );
+        }
+
+        return buffer.toString();
+    }
+}

Modified: maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/output/FullFileNameMapping.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/output/FullFileNameMapping.java?rev=992748&r1=992747&r2=992748&view=diff
==============================================================================
--- maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/output/FullFileNameMapping.java (original)
+++ maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/output/FullFileNameMapping.java Sun Sep  5 09:49:46 2010
@@ -29,12 +29,12 @@ import org.apache.maven.artifact.Artifac
  * @version $Id$
  */
 public class FullFileNameMapping
-    implements FileNameMapping
+    extends AbstractFileNameMapping
 {
 
     public String mapFileName( final Artifact a )
     {
         final String dashedGroupId = a.getGroupId().replace( '.', '-' );
-        return dashedGroupId + "-" + a.getFile().getName();
+        return dashedGroupId + "-" + generateFileName( a );
     }
 }

Modified: maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/output/StandardFileNameMapping.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/output/StandardFileNameMapping.java?rev=992748&r1=992747&r2=992748&view=diff
==============================================================================
--- maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/output/StandardFileNameMapping.java (original)
+++ maven/plugins/trunk/maven-ear-plugin/src/main/java/org/apache/maven/plugin/ear/output/StandardFileNameMapping.java Sun Sep  5 09:49:46 2010
@@ -29,11 +29,12 @@ import org.apache.maven.artifact.Artifac
  * @version $Id$
  */
 public class StandardFileNameMapping
-    implements FileNameMapping
+    extends AbstractFileNameMapping
 {
 
     public String mapFileName( final Artifact a )
     {
-        return a.getFile().getName();
+        return generateFileName( a );
     }
+
 }

Modified: maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/AbstractEarTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/AbstractEarTest.java?rev=992748&r1=992747&r2=992748&view=diff
==============================================================================
--- maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/AbstractEarTest.java (original)
+++ maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/AbstractEarTest.java Sun Sep  5 09:49:46 2010
@@ -120,6 +120,4 @@ public abstract class AbstractEarTest
         return createArtifact( artifactId, type, null );
 
     }
-
-
 }

Added: maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/ArtifactHandlerTestStub.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/ArtifactHandlerTestStub.java?rev=992748&view=auto
==============================================================================
--- maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/ArtifactHandlerTestStub.java (added)
+++ maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/ArtifactHandlerTestStub.java Sun Sep  5 09:49:46 2010
@@ -0,0 +1,73 @@
+package org.apache.maven.plugin.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.handler.ArtifactHandler;
+
+/**
+ * @author <a href="snicoll@apache.org">Stephane Nicoll</a>
+ */
+public class ArtifactHandlerTestStub
+    implements ArtifactHandler
+{
+
+    private final String extension;
+
+    public ArtifactHandlerTestStub( String extension )
+    {
+        this.extension = extension;
+    }
+
+    public String getExtension()
+    {
+        return extension;
+    }
+
+
+    public String getDirectory()
+    {
+        throw new UnsupportedOperationException( "not implemented ; fake artifact stub" );
+    }
+
+    public String getClassifier()
+    {
+        throw new UnsupportedOperationException( "not implemented ; fake artifact stub" );
+    }
+
+    public String getPackaging()
+    {
+        throw new UnsupportedOperationException( "not implemented ; fake artifact stub" );
+    }
+
+    public boolean isIncludesDependencies()
+    {
+        throw new UnsupportedOperationException( "not implemented ; fake artifact stub" );
+    }
+
+    public String getLanguage()
+    {
+        throw new UnsupportedOperationException( "not implemented ; fake artifact stub" );
+    }
+
+    public boolean isAddedToClasspath()
+    {
+        throw new UnsupportedOperationException( "not implemented ; fake artifact stub" );
+    }
+}

Modified: maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/ArtifactTestStub.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/ArtifactTestStub.java?rev=992748&r1=992747&r2=992748&view=diff
==============================================================================
--- maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/ArtifactTestStub.java (original)
+++ maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/ArtifactTestStub.java Sun Sep  5 09:49:46 2010
@@ -42,6 +42,8 @@ public class ArtifactTestStub
     implements Artifact
 
 {
+    public static final String DEFAULT_VERSION = "1.0";
+
     private final String groupId;
 
     private final String artifactId;
@@ -50,13 +52,21 @@ public class ArtifactTestStub
 
     private final String classifier;
 
+    private String version;
 
-    public ArtifactTestStub( String groupId, String artifactId, String type, String classifier )
+
+    public ArtifactTestStub( String groupId, String artifactId, String type, String classifier, String version )
     {
         this.groupId = groupId;
         this.artifactId = artifactId;
         this.type = type;
         this.classifier = classifier;
+        this.version = version;
+    }
+
+    public ArtifactTestStub( String groupId, String artifactId, String type, String classifier )
+    {
+        this( groupId, artifactId, type, classifier, DEFAULT_VERSION );
     }
 
 
@@ -72,12 +82,12 @@ public class ArtifactTestStub
 
     public String getVersion()
     {
-        throw new UnsupportedOperationException( "not implemented ; fake artifact stub" );
+        return version;
     }
 
-    public void setVersion( String string )
+    public void setVersion( String version )
     {
-        throw new UnsupportedOperationException( "not implemented ; fake artifact stub" );
+        this.version = version;
     }
 
     public String getScope()
@@ -112,7 +122,7 @@ public class ArtifactTestStub
 
     public String getBaseVersion()
     {
-        throw new UnsupportedOperationException( "not implemented ; fake artifact stub" );
+        return version;
     }
 
     public void setBaseVersion( String string )
@@ -177,7 +187,7 @@ public class ArtifactTestStub
 
     public ArtifactHandler getArtifactHandler()
     {
-        throw new UnsupportedOperationException( "not implemented ; fake artifact stub" );
+        return new ArtifactHandlerTestStub( "jar" );
     }
 
     public List getDependencyTrail()

Added: maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/output/AbstractFileNameMappingTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/output/AbstractFileNameMappingTest.java?rev=992748&view=auto
==============================================================================
--- maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/output/AbstractFileNameMappingTest.java (added)
+++ maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/output/AbstractFileNameMappingTest.java Sun Sep  5 09:49:46 2010
@@ -0,0 +1,56 @@
+package org.apache.maven.plugin.ear.output;
+
+/*
+ * 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.ear.AbstractEarTest;
+import org.apache.maven.plugin.ear.ArtifactTestStub;
+
+/**
+ * @author <a href="snicoll@apache.org">Stephane Nicoll</a>
+ */
+public abstract class AbstractFileNameMappingTest
+    extends AbstractEarTest
+{
+
+
+    protected Artifact createArtifactWithGroupId( String groupId, String artifactId, String version, String type,
+                                                  String classifier )
+    {
+        return new ArtifactTestStub( groupId, artifactId, type, classifier, version );
+    }
+
+
+    protected Artifact createArtifactWithGroupId( String groupId, String artifactId, String version, String type )
+    {
+        return createArtifactWithGroupId( groupId, artifactId, version, type, null );
+    }
+
+
+    protected Artifact createArtifact( String artifactId, String version, String type, String classifier )
+    {
+        return new ArtifactTestStub( DEFAULT_GROUPID, artifactId, type, classifier, version );
+    }
+
+    protected Artifact createArtifact( String artifactId, String version, String type )
+    {
+        return createArtifact( artifactId, version, type, null );
+    }
+}

Added: maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/output/FullFileNameMappingTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/output/FullFileNameMappingTest.java?rev=992748&view=auto
==============================================================================
--- maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/output/FullFileNameMappingTest.java (added)
+++ maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/output/FullFileNameMappingTest.java Sun Sep  5 09:49:46 2010
@@ -0,0 +1,43 @@
+package org.apache.maven.plugin.ear.output;
+
+/*
+ * 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.
+ */
+
+/**
+ * @author <a href="snicoll@apache.org">Stephane Nicoll</a>
+ */
+public class FullFileNameMappingTest
+    extends AbstractFileNameMappingTest
+{
+
+
+    private final FullFileNameMapping instance = new FullFileNameMapping();
+
+    public void testSimpleArtifact()
+    {
+        assertEquals( "org-apache-foo-1.0-SNAPSHOT.jar",
+                      instance.mapFileName( createArtifactWithGroupId( "org.apache", "foo", "1.0-SNAPSHOT", "jar" ) ) );
+    }
+
+    public void testArtifactWithClassifier()
+    {
+        assertEquals( "org-apache-foo-1.0-SNAPSHOT-sources.jar", instance.mapFileName(
+            createArtifactWithGroupId( "org.apache", "foo", "1.0-SNAPSHOT", "jar", "sources" ) ) );
+    }
+}

Added: maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/output/StandardFileNameMappingTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/output/StandardFileNameMappingTest.java?rev=992748&view=auto
==============================================================================
--- maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/output/StandardFileNameMappingTest.java (added)
+++ maven/plugins/trunk/maven-ear-plugin/src/test/java/org/apache/maven/plugin/ear/output/StandardFileNameMappingTest.java Sun Sep  5 09:49:46 2010
@@ -0,0 +1,42 @@
+package org.apache.maven.plugin.ear.output;
+
+/*
+ * 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.
+ */
+
+/**
+ * @author <a href="snicoll@apache.org">Stephane Nicoll</a>
+ */
+public class StandardFileNameMappingTest
+    extends AbstractFileNameMappingTest
+{
+
+    private final StandardFileNameMapping instance = new StandardFileNameMapping();
+
+    public void testSimpleArtifact()
+    {
+        assertEquals( "foo-1.0-SNAPSHOT.jar", instance.mapFileName( createArtifact( "foo", "1.0-SNAPSHOT", "jar" ) ) );
+    }
+
+    public void testArtifactWithClassifier()
+    {
+        assertEquals( "foo-1.0-SNAPSHOT-sources.jar",
+                      instance.mapFileName( createArtifact( "foo", "1.0-SNAPSHOT", "jar", "sources" ) ) );
+    }
+
+}