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 );