Author: michaelo
Date: Fri May 24 18:39:38 2013
New Revision: 1486160

URL: http://svn.apache.org/r1486160
Log:
[MSHARED-270] Add Implementation-URL to DefaultImplementationEntries

- Modified source, test, docs
- java.util.jar.Attributes has one unpleasent drawback: It is backed by a 
HashMap, so insertion order of entries is not retained and Implemention-URL 
lands in the middle of nowhere.
- Note to m-(javadoc|jar|etc.)-plugin implementors: if your are using 2.6 and 
plexus archiver, you *must* upgrade plexus archiver to 2.2 otherwise your 
plugin won't compile due to a missing symbol

Modified:
    
maven/shared/trunk/maven-archiver/src/main/java/org/apache/maven/archiver/MavenArchiver.java
    maven/shared/trunk/maven-archiver/src/site/apt/examples/manifest.apt
    maven/shared/trunk/maven-archiver/src/site/xdoc/index.xml
    
maven/shared/trunk/maven-archiver/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java

Modified: 
maven/shared/trunk/maven-archiver/src/main/java/org/apache/maven/archiver/MavenArchiver.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-archiver/src/main/java/org/apache/maven/archiver/MavenArchiver.java?rev=1486160&r1=1486159&r2=1486160&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-archiver/src/main/java/org/apache/maven/archiver/MavenArchiver.java
 (original)
+++ 
maven/shared/trunk/maven-archiver/src/main/java/org/apache/maven/archiver/MavenArchiver.java
 Fri May 24 18:39:38 2013
@@ -199,7 +199,7 @@ public class MavenArchiver
         }
         else
         {
-            // if the value is empty we have create an entry with an empty 
string 
+            // if the value is empty we have create an entry with an empty 
string
             // to prevent null print in the manifest file
             Manifest.Attribute attr = new Manifest.Attribute( key, "" );
             manifest.addConfiguredAttribute( attr );
@@ -384,6 +384,11 @@ public class MavenArchiver
             {
                 addManifestAttribute( m, entries, "Implementation-Vendor", 
project.getOrganization().getName() );
             }
+
+            if ( project.getUrl() != null )
+            {
+                addManifestAttribute( m, entries, "Implementation-URL", 
project.getUrl() );
+            }
         }
 
         String mainClass = config.getMainClass();

Modified: maven/shared/trunk/maven-archiver/src/site/apt/examples/manifest.apt
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-archiver/src/site/apt/examples/manifest.apt?rev=1486160&r1=1486159&r2=1486160&view=diff
==============================================================================
--- maven/shared/trunk/maven-archiver/src/site/apt/examples/manifest.apt 
(original)
+++ maven/shared/trunk/maven-archiver/src/site/apt/examples/manifest.apt Fri 
May 24 18:39:38 2013
@@ -90,12 +90,16 @@ Implementation-Title: ${project.name}
 Implementation-Version: ${project.version}
 Implementation-Vendor-Id: ${project.groupId}
 Implementation-Vendor: ${project.organization.name}
+Implementation-URL: ${project.url}
 +-----+
 
  <<Note:>> If your pom.xml does not have an 
<<<\<organization\>>>>/<<<\<name\>>>>
  element, then the <<<Specification-Vendor>>> and <<<Implementation-Vendor>>>
  entries will <<not>> be in the manifest.
 
+ <<Note:>> If your pom.xml does not have a <<<\<url\>>>> element, referenced 
through interpolation,
+ then the <<<Implementation-URL>>> entry will <<not>> be in the manifest.
+
  <<Note:>> If your pom.xml does not have a <<<\<name\>>>> element, then the
  <<<Specification-Title>>> and <<<Implementation-Title>>> entries will have
  "Unnamed - $\{project.groupId\}:$\{project.artifactId\}:$\{project.version\}" 
as their value.

Modified: maven/shared/trunk/maven-archiver/src/site/xdoc/index.xml
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-archiver/src/site/xdoc/index.xml?rev=1486160&r1=1486159&r2=1486160&view=diff
==============================================================================
--- maven/shared/trunk/maven-archiver/src/site/xdoc/index.xml (original)
+++ maven/shared/trunk/maven-archiver/src/site/xdoc/index.xml Fri May 24 
18:39:38 2013
@@ -200,11 +200,12 @@ Implementation-Title: ${project.name}
 Implementation-Version: ${project.version}
 Implementation-Vendor-Id: ${project.groupId}
 Implementation-Vendor: ${project.organization.name}
+Implementation-URL: ${project.url}
               </source>
               The default value is <code>false</code>.
             </td>
             <td>boolean</td>
-            <td>2.1</td>
+            <td>2.1 and 2.6</td>
           </tr>
           <tr>
             <td>addDefaultSpecificationEntries</td>

Modified: 
maven/shared/trunk/maven-archiver/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-archiver/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java?rev=1486160&r1=1486159&r2=1486160&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-archiver/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java
 (original)
+++ 
maven/shared/trunk/maven-archiver/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java
 Fri May 24 18:39:38 2013
@@ -453,6 +453,7 @@ public class MavenArchiverTest
         assertEquals( "0.1", manifest.get( 
Attributes.Name.IMPLEMENTATION_VERSION ) );
         assertEquals( "org.apache.dummy", manifest.get( 
Attributes.Name.IMPLEMENTATION_VENDOR_ID ) );
         assertEquals( "Apache", manifest.get( 
Attributes.Name.IMPLEMENTATION_VENDOR ) );
+        assertEquals( "http://maven.apache.org";, manifest.get( 
Attributes.Name.IMPLEMENTATION_URL ) );
 
         assertEquals( System.getProperty( "java.version" ), manifest.get( new 
Attributes.Name( "Build-Jdk" ) ) );
         assertEquals( System.getProperty( "user.name" ), manifest.get( new 
Attributes.Name( "Built-By" ) ) );
@@ -502,6 +503,7 @@ public class MavenArchiverTest
         assertEquals( "0.1", manifest.get( 
Attributes.Name.IMPLEMENTATION_VERSION ) );
         assertEquals( "org.apache.dummy", manifest.get( 
Attributes.Name.IMPLEMENTATION_VENDOR_ID ) );
         assertEquals( "Apache", manifest.get( 
Attributes.Name.IMPLEMENTATION_VENDOR ) );
+        assertEquals( "http://maven.apache.org";, manifest.get( 
Attributes.Name.IMPLEMENTATION_URL ) );
 
         assertEquals( "org.apache.maven.Foo", manifest.get( 
Attributes.Name.MAIN_CLASS ) );
 
@@ -839,6 +841,7 @@ public class MavenArchiverTest
         build.setOutputDirectory( "target" );
         project.setBuild( build );
         project.setName( "archiver test" );
+        project.setUrl( "http://maven.apache.org"; );
         Organization organization = new Organization();
         organization.setName( "Apache" );
         project.setOrganization( organization );


Reply via email to