You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by bo...@apache.org on 2014/01/04 16:25:05 UTC
svn commit: r1555355 - in /ant/core/trunk: WHATSNEW
src/main/org/apache/tools/ant/taskdefs/Jar.java
src/tests/antunit/taskdefs/jar-test.xml
Author: bodewig
Date: Sat Jan 4 15:25:04 2014
New Revision: 1555355
URL: http://svn.apache.org/r1555355
Log:
merge filesetmanifest=mergewithoutmain even if no explicit manifest has been specified. PR 54171
Modified:
ant/core/trunk/WHATSNEW
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Jar.java
ant/core/trunk/src/tests/antunit/taskdefs/jar-test.xml
Modified: ant/core/trunk/WHATSNEW
URL: http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=1555355&r1=1555354&r2=1555355&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Sat Jan 4 15:25:04 2014
@@ -56,6 +56,11 @@ Fixed bugs:
* <javadoc> caused a NullPointerException when no destdir was set.
Bugzilla Report 55949
+ * <jar filesetmanifest="mergewithoutmain"> would still include the
+ Main section of the fileset manifests if there was no nested
+ manifest or manifest attribute.
+ Bugzilla Report 54171
+
Other changes:
--------------
Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Jar.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Jar.java?rev=1555355&r1=1555354&r2=1555355&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Jar.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Jar.java Sat Jan 4 15:25:04 2014
@@ -516,8 +516,6 @@ public class Jar extends Zip {
private Manifest createManifest()
throws BuildException {
try {
- Manifest finalManifest = Manifest.getDefaultManifest();
-
if (manifest == null) {
if (manifestFile != null) {
// if we haven't got the manifest yet, attempt to
@@ -526,6 +524,25 @@ public class Jar extends Zip {
}
}
+ // fileset manifest must come even before the default
+ // manifest if mergewithoutmain is selected and there is
+ // no explicit manifest specified - otherwise the Main
+ // section of the fileset manifest is still merged to the
+ // final manifest.
+ boolean mergeFileSetFirst = !mergeManifestsMain
+ && filesetManifest != null
+ && configuredManifest == null && manifest == null;
+
+ Manifest finalManifest;
+ if (mergeFileSetFirst) {
+ finalManifest = new Manifest();
+ finalManifest.merge(filesetManifest, false, mergeClassPaths);
+ finalManifest.merge(Manifest.getDefaultManifest(),
+ true, mergeClassPaths);
+ } else {
+ finalManifest = Manifest.getDefaultManifest();
+ }
+
/*
* Precedence: manifestFile wins over inline manifest,
* over manifests read from the filesets over the original
@@ -537,7 +554,9 @@ public class Jar extends Zip {
if (isInUpdateMode()) {
finalManifest.merge(originalManifest, false, mergeClassPaths);
}
- finalManifest.merge(filesetManifest, false, mergeClassPaths);
+ if (!mergeFileSetFirst) {
+ finalManifest.merge(filesetManifest, false, mergeClassPaths);
+ }
finalManifest.merge(configuredManifest, !mergeManifestsMain,
mergeClassPaths);
finalManifest.merge(manifest, !mergeManifestsMain,
Modified: ant/core/trunk/src/tests/antunit/taskdefs/jar-test.xml
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/taskdefs/jar-test.xml?rev=1555355&r1=1555354&r2=1555355&view=diff
==============================================================================
--- ant/core/trunk/src/tests/antunit/taskdefs/jar-test.xml (original)
+++ ant/core/trunk/src/tests/antunit/taskdefs/jar-test.xml Sat Jan 4 15:25:04 2014
@@ -226,4 +226,27 @@ Main-Class: MyClass
resource="${output}/META-INF/MANIFEST.MF"/>
</target>
+ <target name="testMergeWithoutMainWithoutExplicitManifest"
+ description="https://issues.apache.org/bugzilla/show_bug.cgi?id=54171">
+ <mkdir dir="${input}"/>
+ <mkdir dir="${output}"/>
+ <jar destfile="${input}/input.jar">
+ <manifest>
+ <attribute name="Foo" value="Main Section"/>
+ </manifest>
+ <fileset dir="."/>
+ </jar>
+ <jar destfile="${input}/test.jar"
+ filesetmanifest="mergewithoutmain">
+ <zipgroupfileset dir="${input}">
+ <include name="input.jar"/>
+ </zipgroupfileset>
+ </jar>
+ <unjar src="${input}/test.jar" dest="${output}"/>
+ <au:assertFileExists file="${output}/META-INF/MANIFEST.MF"/>
+ <au:assertResourceDoesntContain
+ value="Foo: Main Section"
+ resource="${output}/META-INF/MANIFEST.MF"/>
+ </target>
+
</project>