Author: brett Date: Tue Jul 11 00:40:10 2006 New Revision: 420750 URL: http://svn.apache.org/viewvc?rev=420750&view=rev Log: [MNG-2284] fix duplication of entries in the manifest Submitted by: Fredrik Vraalsen
Modified: maven/shared/trunk/maven-archiver/src/main/java/org/apache/maven/archiver/MavenArchiver.java 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=420750&r1=420749&r2=420750&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 Tue Jul 11 00:40:10 2006 @@ -149,7 +149,9 @@ if ( classpath.length() > 0 ) { - addManifestAttribute( m, entries, "Class-Path", classpath.toString() ); + // Class-Path is special and should be added to manifest even if + // it is specified in the manifestEntries section + addManifestAttribute( m, "Class-Path", classpath.toString() ); } } @@ -340,20 +342,6 @@ } Manifest manifest = getManifest( workingProject, archiveConfiguration ); - - // any custom manifest entries in the archive configuration manifest? - if ( !archiveConfiguration.isManifestEntriesEmpty() ) - { - Map entries = archiveConfiguration.getManifestEntries(); - Set keys = entries.keySet(); - for ( Iterator iter = keys.iterator(); iter.hasNext(); ) - { - String key = (String) iter.next(); - String value = (String) entries.get( key ); - Manifest.Attribute attr = new Manifest.Attribute( key, value ); - manifest.addConfiguredAttribute( attr ); - } - } // any custom manifest sections in the archive configuration manifest? if ( !archiveConfiguration.isManifestSectionsEmpty() ) 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=420750&r1=420749&r2=420750&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 Tue Jul 11 00:40:10 2006 @@ -23,7 +23,10 @@ import org.apache.maven.project.MavenProject; import org.codehaus.plexus.archiver.jar.Manifest; +import java.io.File; +import java.util.Collections; import java.util.Comparator; +import java.util.List; import java.util.Set; import java.util.TreeSet; @@ -131,4 +134,44 @@ assertEquals( "dummy2 dummy4", manifest.getMainSection().getAttributeValue( "Extension-List" ) ); } + + public void testMultiClassPath() throws Exception { + final File tempFile = File.createTempFile( "maven-archiver-test-", ".jar" ); + + try { + MavenArchiver archiver = new MavenArchiver(); + + Model model = new Model(); + model.setArtifactId( "dummy" ); + + + MavenProject project = new MavenProject( model ) { + public List getRuntimeClasspathElements() { + return Collections.singletonList( tempFile.getAbsolutePath() ); + } + }; + + // there should be a mock or a setter for this field. + ManifestConfiguration manifestConfig = new ManifestConfiguration() + { + public boolean isAddClasspath() + { + return true; + } + }; + + MavenArchiveConfiguration archiveConfiguration = new MavenArchiveConfiguration(); + archiveConfiguration.setManifest( manifestConfig ); + archiveConfiguration.addManifestEntry( "Class-Path", "help/" ); + + Manifest manifest = archiver.getManifest( project, archiveConfiguration ); + String classPath = manifest.getMainSection().getAttribute( "Class-Path" ).getValue(); + assertTrue( "User specified Class-Path entry was not added to manifest", classPath.indexOf( "help/" ) != -1 ); + assertTrue( "Class-Path generated by addClasspath was not added to manifest", classPath.indexOf( tempFile.getName() ) != -1 ); + } finally { + tempFile.delete(); + } + + } + }