ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From j..@apache.org
Subject svn commit: r553857 - in /ant/core/trunk: build.xml docs/manual/CoreTasks/jar.html src/etc/testcases/taskdefs/jar.xml src/main/org/apache/tools/ant/taskdefs/Jar.java src/tests/junit/org/apache/tools/ant/taskdefs/JarTest.java
Date Fri, 06 Jul 2007 12:19:29 GMT
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: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org


Mime
View raw message