From 282291fb51250021150ac1548fbe8f20044c1302 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Sat, 7 Aug 2010 20:43:21 +0000 Subject: [PATCH] didn't work for manifests added via + s that used the prefix or fullpath attributes. + Bugzilla Report 49605. + Other changes: -------------- diff --git a/src/main/org/apache/tools/ant/taskdefs/Jar.java b/src/main/org/apache/tools/ant/taskdefs/Jar.java index 772e89c7f..352a42ab4 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Jar.java +++ b/src/main/org/apache/tools/ant/taskdefs/Jar.java @@ -46,6 +46,7 @@ import java.util.zip.ZipFile; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.Manifest.Section; +import org.apache.tools.ant.types.ArchiveFileSet; import org.apache.tools.ant.types.EnumeratedAttribute; import org.apache.tools.ant.types.FileSet; import org.apache.tools.ant.types.Path; @@ -1176,6 +1177,18 @@ public class Jar extends Zip { } for (int j = 0; j < resources[0].length; j++) { String name = resources[0][j].getName().replace('\\', '/'); + if (rcs[i] instanceof ArchiveFileSet) { + ArchiveFileSet afs = (ArchiveFileSet) rcs[i]; + if (!"".equals(afs.getFullpath(getProject()))) { + name = afs.getFullpath(getProject()); + } else if (!"".equals(afs.getPrefix(getProject()))) { + String prefix = afs.getPrefix(getProject()); + if (!prefix.endsWith("/") && !prefix.endsWith("\\")) { + prefix += "/"; + } + name = prefix + name; + } + } if (name.equalsIgnoreCase(MANIFEST_NAME)) { manifests[i] = new Resource[] {resources[0][j]}; break; diff --git a/src/tests/antunit/taskdefs/jar-test.xml b/src/tests/antunit/taskdefs/jar-test.xml index 2c22743c4..87c5d726a 100644 --- a/src/tests/antunit/taskdefs/jar-test.xml +++ b/src/tests/antunit/taskdefs/jar-test.xml @@ -207,4 +207,23 @@ + + + + + Manifest-Version: 1.0 +Main-Class: MyClass + + + + + + + + + +