Browse Source

<jar doesn't merge manifests that come from zipfilesets with prefix. PR 49605

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@983308 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 15 years ago
parent
commit
282291fb51
3 changed files with 36 additions and 0 deletions
  1. +4
    -0
      WHATSNEW
  2. +13
    -0
      src/main/org/apache/tools/ant/taskdefs/Jar.java
  3. +19
    -0
      src/tests/antunit/taskdefs/jar-test.xml

+ 4
- 0
WHATSNEW View File

@@ -115,6 +115,10 @@ Fixed bugs:
files matched.
Bugzilla Report 49594.

* <jar filesetmanifest="merge"> didn't work for manifests added via
<zipfileset>s that used the prefix or fullpath attributes.
Bugzilla Report 49605.

Other changes:
--------------



+ 13
- 0
src/main/org/apache/tools/ant/taskdefs/Jar.java View File

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


+ 19
- 0
src/tests/antunit/taskdefs/jar-test.xml View File

@@ -207,4 +207,23 @@
<au:assertResourceContains value="Test: Header"
resource="${output}/META-INF/MANIFEST.MF"/>
</target>

<target name="testZipfilesetMerge"
description="https://issues.apache.org/bugzilla/show_bug.cgi?id=49605">
<mkdir dir="${input}"/>
<mkdir dir="${output}"/>
<echo file="${input}/MANIFEST.MF">Manifest-Version: 1.0
Main-Class: MyClass

</echo>
<jar destfile="${input}/manifesttest.jar"
filesetmanifest="merge">
<zipfileset file="${input}/MANIFEST.MF" prefix="META-INF"/>
</jar>
<unjar src="${input}/manifesttest.jar" dest="${output}"/>
<au:assertFileExists file="${output}/META-INF/MANIFEST.MF"/>
<au:assertResourceContains value="Main-Class: MyClass"
resource="${output}/META-INF/MANIFEST.MF"/>
</target>

</project>

Loading…
Cancel
Save