Author: jhm
Date: Fri Jul 6 05:19:28 2007
New Revision: 553857
URL: http://svn.apache.org/viewvc?view=rev&rev=553857
Log:
Encourage people to follow the packaging spec.
Modified:
ant/core/trunk/build.xml
ant/core/trunk/docs/manual/CoreTasks/jar.html
ant/core/trunk/src/etc/testcases/taskdefs/jar.xml
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Jar.java
ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/JarTest.java
Modified: ant/core/trunk/build.xml
URL:
http://svn.apache.org/viewvc/ant/core/trunk/build.xml?view=diff&rev=553857&r1=553856&r2=553857
==============================================================================
--- ant/core/trunk/build.xml (original)
+++ ant/core/trunk/build.xml Fri Jul 6 05:19:28 2007
@@ -1547,6 +1547,22 @@
<!-- Used by AntlibTest.testAntlibResource: -->
<jar
jarfile="${build.tests}/org/apache/tools/ant/taskdefs/test2-antlib.jar">
+ <manifest>
+ <attribute name="Extension-name"
+ value="org.apache.tools.ant"/>
+ <attribute name="Specification-Title"
+ value="Apache Ant"/>
+ <attribute name="Specification-Version"
+ value="${manifest-version}"/>
+ <attribute name="Specification-Vendor"
+ value="Apache Software Foundation"/>
+ <attribute name="Implementation-Title"
+ value="org.apache.tools.ant"/>
+ <attribute name="Implementation-Version"
+ value="${manifest-version}"/>
+ <attribute name="Implementation-Vendor"
+ value="Apache Software Foundation"/>
+ </manifest>
<zipfileset dir="${tests.etc.dir}" fullpath="taskdefs/test.antlib.xml">
<include name="taskdefs/test2.antlib.xml"/>
</zipfileset>
Modified: ant/core/trunk/docs/manual/CoreTasks/jar.html
URL:
http://svn.apache.org/viewvc/ant/core/trunk/docs/manual/CoreTasks/jar.html?view=diff&rev=553857&r1=553856&r2=553857
==============================================================================
--- ant/core/trunk/docs/manual/CoreTasks/jar.html (original)
+++ ant/core/trunk/docs/manual/CoreTasks/jar.html Fri Jul 6 05:19:28 2007
@@ -73,14 +73,17 @@
include an empty one for you.)</p>
<p>Manifests are processed by the Jar task according to the
-<a href="http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html">Jar file
specification.</a>
+<a target="_blank"
href="http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html">Jar file
specification.</a>
Note in particular that this may result in manifest lines greater than 72 bytes
-being wrapped and continued on the next line.
-</p>
+being wrapped and continued on the next line.</p>
+
+<p>The Jar task checks whether you specified package information according to
the
+<a target="_blank"
href="http://java.sun.com/j2se/1.3/docs/guide/versioning/spec/VersioningSpecification.html#PackageVersioning">
+versioning specification</a>.</p>
<p><b>Please note that the zip format allows multiple files of the same
-fully-qualified name to exist within a single archive. This has been
-documented as causing various problems for unsuspecting users. If you wish
+fully-qualified name to exist within a single archive. This has been
+documented as causing various problems for unsuspecting users. If you wish
to avoid this behavior you must set the <code>duplicate</code> attribute
to a value other than its default, <code>"add"</code>.</b></p>
Modified: ant/core/trunk/src/etc/testcases/taskdefs/jar.xml
URL:
http://svn.apache.org/viewvc/ant/core/trunk/src/etc/testcases/taskdefs/jar.xml?view=diff&rev=553857&r1=553856&r2=553857
==============================================================================
--- ant/core/trunk/src/etc/testcases/taskdefs/jar.xml (original)
+++ ant/core/trunk/src/etc/testcases/taskdefs/jar.xml Fri Jul 6 05:19:28 2007
@@ -236,5 +236,23 @@
</indexjars>
</jar>
</target>
+
+ <target name="testNoVersionInfo">
+ <mkdir dir="${tmp.dir}"/>
+ <jar destfile="${tmp.jar}" basedir="${tmp.dir}"/>
+ </target>
+ <!-- see
http://java.sun.com/j2se/1.3/docs/guide/versioning/spec/VersioningSpecification.html#PackageVersioning
-->
+ <target name="testHasVersionInfo">
+ <mkdir dir="${tmp.dir}"/>
+ <jar destfile="${tmp.jar}" basedir="${tmp.dir}">
+ <manifest>
+ <attribute name="Implementation-Title" value="Packaging Version
Test"/>
+ <attribute name="Implementation-Version" value="1.0"/>
+ <attribute name="Implementation-Vendor" value="Apache Software
Foundation"/>
+ </manifest>
+ </jar>
+ </target>
+
+
</project>
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?view=diff&rev=553857&r1=553856&r2=553857
==============================================================================
--- 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 Fri Jul 6
05:19:28 2007
@@ -45,6 +45,7 @@
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.EnumeratedAttribute;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.ResourceCollection;
@@ -76,6 +77,7 @@
/** merged manifests added through addConfiguredManifest */
private Manifest configuredManifest;
+
/** shadow of the above if upToDate check alters the value */
private Manifest savedConfiguredManifest;
@@ -158,7 +160,7 @@
setEncoding("UTF8");
rootEntries = new Vector();
}
-
+
/**
* Not used for jar files.
* @param we not used
@@ -773,6 +775,25 @@
*/
protected void cleanUp() {
super.cleanUp();
+
+ // check against packaging spec
+ //
http://java.sun.com/j2se/1.3/docs/guide/versioning/spec/VersioningSpecification.html#PackageVersioning
+ Section mainSection = (configuredManifest==null) ? null :
configuredManifest.getMainSection();
+ if (mainSection==null) {
+ log("No Implementation-Title set. (" + getLocation() + ")");
+ log("No Implementation-Version set. (" + getLocation() + ")");
+ log("No Implementation-Vendor set. (" + getLocation() + ")");
+ } else {
+ if (mainSection.getAttribute("Implementation-Title") == null) {
+ log("No Implementation-Title set. (" + getLocation() + ")");
+ }
+ if (mainSection.getAttribute("Implementation-Version") == null) {
+ log("No Implementation-Version set. (" + getLocation() + ")");
+ }
+ if (mainSection.getAttribute("Implementation-Vendor") == null) {
+ log("No Implementation-Vendor set. (" + getLocation() + ")");
+ }
+ }
// we want to save this info if we are going to make another pass
if (!doubleFilePass || !skipWriting) {
Modified:
ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/JarTest.java
URL:
http://svn.apache.org/viewvc/ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/JarTest.java?view=diff&rev=553857&r1=553856&r2=553857
==============================================================================
--- ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/JarTest.java
(original)
+++ ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/JarTest.java
Fri Jul 6 05:19:28 2007
@@ -267,4 +267,19 @@
public void testIndexJarsPlusJarMarker() {
executeTarget("testIndexJarsPlusJarMarker");
}
+
+ public void testNoVersionInfo() {
+ executeTarget("testNoVersionInfo");
+ assertLogContaining("No Implementation-Title set.");
+ assertLogContaining("No Implementation-Version set.");
+ assertLogContaining("No Implementation-Vendor set.");
+ }
+
+ public void testHasVersionInfo() {
+ executeTarget("testHasVersionInfo");
+ assertFalse( getLog().contains("No Implementation-Title set.") );
+ assertFalse( getLog().contains("No Implementation-Version set.") );
+ assertFalse( getLog().contains("No Implementation-Vendor set.") );
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]