Browse Source

add new preservelastmodified attribute to signjar

PR: 30987
Obtained from: Ignacio Coloma


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@277079 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Reilly 20 years ago
parent
commit
6a3d5030bb
6 changed files with 60 additions and 0 deletions
  1. +1
    -0
      CONTRIBUTORS
  2. +3
    -0
      WHATSNEW
  3. +6
    -0
      docs/manual/CoreTasks/signjar.html
  4. +26
    -0
      src/etc/testcases/taskdefs/signjar.xml
  5. +20
    -0
      src/main/org/apache/tools/ant/taskdefs/SignJar.java
  6. +4
    -0
      src/testcases/org/apache/tools/ant/taskdefs/SignJarTest.java

+ 1
- 0
CONTRIBUTORS View File

@@ -74,6 +74,7 @@ Harish Prabandham
Haroon Rafique Haroon Rafique
Hiroaki Nakamura Hiroaki Nakamura
Holger Engels Holger Engels
Ignacio Coloma
Ingenonsya France Ingenonsya France
Ingmar Stein Ingmar Stein
Irene Rusman Irene Rusman


+ 3
- 0
WHATSNEW View File

@@ -92,6 +92,9 @@ Other changes:
* Added isSigned condition and task, and signedselector selector * Added isSigned condition and task, and signedselector selector
Bugzilla report 32126. Bugzilla report 32126.


* Added preserveLastModified attribute to signjar task.
Bugzilla report 30987.

Changes from Ant 1.6.2 to current Ant 1.6 CVS version Changes from Ant 1.6.2 to current Ant 1.6 CVS version
===================================================== =====================================================




+ 6
- 0
docs/manual/CoreTasks/signjar.html View File

@@ -92,6 +92,12 @@ block</td>
style of standard java memory specs (e.g. 128m = 128 MBytes)</td> style of standard java memory specs (e.g. 128m = 128 MBytes)</td>
<td valign="top" align="center">No</td> <td valign="top" align="center">No</td>
</tr> </tr>
<tr>
<td valign="top">preservelastmodified</td>
<td valign="top">Give the signed file the same last modified
time as the original jar file.</td>
<td valign="top" align="center">No; default false.</td>
</tr>
</table> </table>
<h3>Parameters as nested elements</h3> <h3>Parameters as nested elements</h3>
<table border="1" cellpadding="2" cellspacing="0"> <table border="1" cellpadding="2" cellspacing="0">


+ 26
- 0
src/etc/testcases/taskdefs/signjar.xml View File

@@ -32,6 +32,32 @@
storepass="apacheant" maxmemory="128m"/> storepass="apacheant" maxmemory="128m"/>
</target> </target>


<target name="preserveLastModified">
<jar jarfile="signtest.jar" basedir="${classes.dir}" includes="**/Task.class"/>
<touch file="signtest.jar" datetime="06/28/2000 2:02 pm"/>
<signjar jar="signtest.jar" alias="testonly" keystore="testkeystore" storepass="apacheant"
preservelastmodified="true"/>
<!-- Currently there is no condition for testing the date of file - so
use a selector -->
<pathconvert property="signtest.jar.prop" targetos="unix">
<path>
<fileset dir="." includes="signtest.jar">
<date datetime="06/28/2000 2:02 pm" when="equal"/>
</fileset>
</path>
<mapper>
<flattenmapper/>
</mapper>
</pathconvert>
<fail message="preserveLastModified did not preserve the last modified time">
<condition>
<not>
<equals arg1="signtest.jar" arg2="signtest.jar"/>
</not>
</condition>
</fail>
</target>

<target name="clean"> <target name="clean">
<delete file="signtest.jar"/> <delete file="signtest.jar"/>
</target> </target>


+ 20
- 0
src/main/org/apache/tools/ant/taskdefs/SignJar.java View File

@@ -66,6 +66,7 @@ public class SignJar extends Task {
protected boolean verbose; protected boolean verbose;
protected boolean internalsf; protected boolean internalsf;
protected boolean sectionsonly; protected boolean sectionsonly;
protected boolean preserveLastModified;


/** The maximum amount of memory to use for Jar signer */ /** The maximum amount of memory to use for Jar signer */
private String maxMemory; private String maxMemory;
@@ -237,6 +238,7 @@ public class SignJar extends Task {
return; return;
} }


long lastModified = jarSource.lastModified();
final ExecTask cmd = (ExecTask) getProject().createTask("exec"); final ExecTask cmd = (ExecTask) getProject().createTask("exec");
cmd.setExecutable(JavaEnvUtils.getJdkExecutable("jarsigner")); cmd.setExecutable(JavaEnvUtils.getJdkExecutable("jarsigner"));


@@ -302,6 +304,15 @@ public class SignJar extends Task {
cmd.setFailonerror(true); cmd.setFailonerror(true);
cmd.setTaskName(getTaskName()); cmd.setTaskName(getTaskName());
cmd.execute(); cmd.execute();

// restore the lastModified attribute
if (preserveLastModified) {
if (jarTarget != null) {
jarTarget.setLastModified(lastModified);
} else {
jarSource.setLastModified(lastModified);
}
}
} }


protected boolean isUpToDate(File jarFile, File signedjarFile) { protected boolean isUpToDate(File jarFile, File signedjarFile) {
@@ -345,5 +356,14 @@ public class SignJar extends Task {
return false; return false;
} }
} }

/**
* true to indicate that the signed jar modification date remains the same as the original.
* Defaults to false
* @param preserveLastModified if true preserve the last modified time
*/
public void setPreserveLastModified(boolean preserveLastModified) {
this.preserveLastModified = preserveLastModified;
}
} }



+ 4
- 0
src/testcases/org/apache/tools/ant/taskdefs/SignJarTest.java View File

@@ -66,4 +66,8 @@ public class SignJarTest extends BuildFileTest {
public void testURLKeystoreHTTP() { public void testURLKeystoreHTTP() {
executeTarget("urlKeystoreHTTP"); executeTarget("urlKeystoreHTTP");
} }

public void testPreserveLastModified() {
executeTarget("preserveLastModified");
}
} }

Loading…
Cancel
Save