Merge branch '1.9.x'
Project: http://git-wip-us.apache.org/repos/asf/ant/repo Commit: http://git-wip-us.apache.org/repos/asf/ant/commit/b99b6fa5 Tree: http://git-wip-us.apache.org/repos/asf/ant/tree/b99b6fa5 Diff: http://git-wip-us.apache.org/repos/asf/ant/diff/b99b6fa5 Branch: refs/heads/master Commit: b99b6fa538e857f7f064b943729babe25e2a60f0 Parents: ec5b55d d100b90 Author: Stefan Bodewig <bode...@apache.org> Authored: Fri Sep 28 18:30:04 2018 +0200 Committer: Stefan Bodewig <bode...@apache.org> Committed: Fri Sep 28 18:30:04 2018 +0200 ---------------------------------------------------------------------- WHATSNEW | 8 ++ manual/Tasks/signjar.html | 33 +++++++- manual/Tasks/verifyjar.html | 31 ++++++++ .../ant/taskdefs/AbstractJarSignerTask.java | 84 +++++++++++++++++++- .../org/apache/tools/ant/types/Commandline.java | 11 +++ 5 files changed, 165 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ant/blob/b99b6fa5/WHATSNEW ---------------------------------------------------------------------- diff --cc WHATSNEW index ff59e63,6cd11da..19b2c0f --- a/WHATSNEW +++ b/WHATSNEW @@@ -35,10 -24,15 +35,18 @@@ Other changes * the <modified> selector has a new built-in algorithm 'lastmodified' which computes a value based upon the lastmodified time of the file. + * junitlauncher task now supports forking and can be used with JaCoCo + (see https://github.com/jacoco/jacoco/issues/673). + + * signjar and verifyjar now support the -providerName, -providerClass + and -providerArg command line options of keytool via new attributes. + Bugzilla Report 65234 + + * signjar and verifyjar now supported nested <arg> elements for + command line arguments that are not supported explicitly by the + tasks via attributes. + -Changes from Ant 1.9.12 TO Ant 1.9.13 +Changes from Ant 1.10.4 TO Ant 1.10.5 ===================================== Fixed bugs: http://git-wip-us.apache.org/repos/asf/ant/blob/b99b6fa5/manual/Tasks/signjar.html ---------------------------------------------------------------------- diff --cc manual/Tasks/signjar.html index 03f9156,88bdb43..bc098e7 --- a/manual/Tasks/signjar.html +++ b/manual/Tasks/signjar.html @@@ -45,237 -47,285 +45,268 @@@ place.</p </ul> <h3>Parameters</h3> -<table border="1" cellpadding="2" cellspacing="0"> +<table class="attr"> <tr> - <td valign="top"><b>Attribute</b></td> - <td valign="top"><b>Description</b></td> - <td align="center" valign="top"><b>Required</b></td> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> </tr> <tr> - <td valign="top">jar</td> - <td valign="top">the jar file to sign</td> - <td valign="top" align="center">Yes, unless nested paths have - been used.</td> + <td>jar</td> + <td>the jar file to sign</td> + <td>Yes, unless nested paths have been used</td> </tr> <tr> - <td valign="top">alias</td> - <td valign="top">the alias to sign under</td> - <td valign="top" align="center">Yes.</td> + <td>alias</td> + <td>the alias to sign under</td> + <td>Yes</td> </tr> <tr> - <td valign="top">storepass</td> - <td valign="top">password for keystore integrity. Ant will not use + <td>storepass</td> + <td>password for keystore integrity. Ant will not use the <code>-storepass</code> command line argument but send the password to jarsigner when it prompts for it.</td> - <td valign="top" align="center">Yes.</td> + <td>Yes</td> </tr> <tr> - <td valign="top">keystore</td> - <td valign="top">keystore location</td> - <td valign="top" align="center">No</td> + <td>keystore</td> + <td>keystore location</td> + <td>No</td> </tr> <tr> - <td valign="top">storetype</td> - <td valign="top">keystore type</td> - <td valign="top" align="center">No</td> + <td>storetype</td> + <td>keystore type</td> + <td>No</td> </tr> <tr> - <td valign="top">keypass</td> - <td valign="top">password for private key (if different)</td> - <td valign="top" align="center">No</td> + <td>keypass</td> + <td>password for private key (if different)</td> + <td>No</td> </tr> <tr> - <td valign="top">sigfile</td> - <td valign="top">name of .SF/.DSA file</td> - <td valign="top" align="center">No</td> + <td>sigfile</td> + <td>name of <samp>.SF</samp>/<samp>.DSA</samp> file</td> + <td>No</td> </tr> <tr> - <td valign="top">signedjar</td> - <td valign="top">name of signed JAR file. This can only be set when - the <tt>jar</tt> attribute is set.</td> - <td valign="top" align="center">No.</td> + <td>signedjar</td> + <td>name of signed JAR file. This can only be set when the <var>jar</var> attribute is set.</td> + <td>No</td> </tr> <tr> - <td valign="top">verbose</td> - <td valign="top">(true | false) verbose output when signing</td> - <td valign="top" align="center">No; default false</td> + <td>verbose</td> + <td>(<q>true|false</q>) verbose output when signing</td> + <td>No; default <q>false</q></td> </tr> <tr> - <td valign="top">strict</td> - <td valign="top">(true | false) strict checking when signing.<br/><em>since Ant 1.9.1</em>.</td> - <td valign="top" align="center">No; default false</td> + <td>strict</td> + <td>(<q>true|false</q>) strict checking when signing.<br/><em>since Ant 1.9.1</em>.</td> + <td>No; default <q>false</q></td> </tr> <tr> - <td valign="top">internalsf</td> - <td valign="top">(true | false) include the .SF file inside the signature -block</td> - <td valign="top" align="center">No; default false</td> + <td>internalsf</td> + <td>(<q>true|false</q>) include the <samp>.SF</samp> file inside the signature block</td> + <td>No; default <q>false</q></td> </tr> <tr> - <td valign="top">sectionsonly</td> - <td valign="top">(true | false) don't compute hash of entire manifest</td> - <td valign="top" align="center">No; default false</td> + <td>sectionsonly</td> + <td>(<q>true|false</q>) don't compute hash of entire manifest</td> + <td>No; default <q>false</q></td> </tr> <tr> - <td valign="top">lazy</td> - <td valign="top">flag to control whether the presence of a signature - file means a JAR is signed. This is only used when the target JAR matches - the source JAR</td> - <td valign="top" align="center">No; default false</td> + <td>lazy</td> + <td>flag to control whether the presence of a signature file means a JAR is signed. This is only + used when the target JAR matches the source JAR</td> + <td>No; default <q>false</q></td> </tr> <tr> - <td valign="top">maxmemory</td> - <td valign="top">Specifies the maximum memory the jarsigner VM will use. Specified in the - style of standard java memory specs (e.g. 128m = 128 MBytes)</td> - <td valign="top" align="center">No</td> + <td>maxmemory</td> + <td>Specifies the maximum memory the <kbd>jarsigner</kbd> JVM will use. Specified in the style + of standard Java memory specs (e.g. <q>128m</q> = 128 MBytes)</td> + <td>No</td> </tr> <tr> - <td valign="top">preservelastmodified</td> - <td valign="top">Give the signed files the same last modified - time as the original jar files.</td> - <td valign="top" align="center">No; default false.</td> + <td>preservelastmodified</td> + <td>Give the signed files the same last modified time as the original jar files.</td> + <td>No; default <q>false</q>.</td> </tr> <tr> - <td valign="top">tsaurl</td> - <td valign="top">URL for a timestamp authority for timestamped - JAR files in Java1.5+</td> - <td valign="top" align="center">No</td> + <td>tsaurl</td> + <td>URL for a timestamp authority for timestamped JAR files in Java 5+</td> + <td>No</td> </tr> <tr> - <td valign="top">tsacert</td> - <td valign="top">alias in the keystore for a timestamp authority for - timestamped JAR files in Java1.5+</td> - <td valign="top" align="center">No</td> + <td>tsacert</td> + <td>alias in the keystore for a timestamp authority for timestamped JAR files in Java 5+</td> + <td>No</td> </tr> <tr> - <td valign="top">tsaproxyhost</td> - <td valign="top">proxy host to be used when connecting to TSA server</td> - <td valign="top" align="center">No</td> + <td>tsaproxyhost</td> + <td>proxy host to be used when connecting to TSA server</td> + <td>No</td> </tr> <tr> - <td valign="top">tsaproxyport</td> - <td valign="top">proxy port to be used when connecting to TSA server</td> - <td valign="top" align="center">No</td> + <td>tsaproxyport</td> + <td>proxy port to be used when connecting to TSA server</td> + <td>No</td> </tr> <tr> - <td valign="top">executable</td> - <td valign="top">Specify a particular <code>jarsigner</code> executable - to use in place of the default binary (found in the same JDK as - Apache Ant is running in).<br/> - Must support the same command line options as the Sun JDK - jarsigner command. - <em>since Ant 1.8.0</em>.</td> - <td align="center" valign="top">No</td> + <td>executable</td> + <td>Specify a particular <kbd>jarsigner</kbd> executable to use in place of the default binary + (found in the same JDK as Apache Ant is running in).<br/>Must support the same command line + options as the Sun JDK <kbd>jarsigner</kbd> command. <em>since Ant 1.8.0</em>.</td> + <td>No</td> </tr> <tr> - <td valign="top">force</td> - <td valign="top">Whether to force signing of the jar file even if - it doesn't seem to be out of date or already signed. - <em>since Ant 1.8.0</em>.</td> - <td align="center" valign="top">No; default false</td> + <td>force</td> + <td>Whether to force signing of the jar file even if it doesn't seem to be out of date or + already signed. <em>since Ant 1.8.0</em>.</td> + <td>No; default <q>false</q></td> </tr> <tr> - <td valign="top">sigalg</td> - <td valign="top">name of signature algorithm</td> - <td valign="top" align="center">No</td> + <td>sigalg</td> + <td>name of signature algorithm</td> + <td>No</td> </tr> <tr> - <td valign="top">digestalg</td> - <td valign="top">name of digest algorithm</td> - <td valign="top" align="center">No</td> + <td>digestalg</td> + <td>name of digest algorithm</td> + <td>No</td> </tr> <tr> - <td valign="top">providername</td> - <td valign="top">name of a cryptographic service provider's name + <td>tsadigestalg</td> + <td>name of TSA digest algorithm. <em>since Ant 1.10.2</em></td> + <td>No</td> + </tr> ++ <tr> ++ <td>providername</td> ++ <td>name of a cryptographic service provider's name + when listed in the security properties file. - <em>since Ant 1.9.14</em>.</td> - <td valign="top" align="center">No</td> ++ <em>since Ant 1.10.6</em>.</td> ++ <td>No</td> + </tr> + <tr> - <td valign="top">providerclass</td> - <td valign="top">name of a cryptographic service provider's master ++ <td>providerclass</td> ++ <td>name of a cryptographic service provider's master + class file when the service provider is not listed in the security + properties file. - <em>since Ant 1.9.14</em>.</td> - <td valign="top" align="center">No</td> ++ <em>since Ant 1.10.6</em>.</td> ++ <td>No</td> + </tr> + <tr> - <td valign="top">providerarg</td> - <td valign="top">Represents an optional string input argument for ++ <td>providerarg</td> ++ <td>Represents an optional string input argument for + the constructor of provider_class_name. Ignored + if <code>providerclass</code> is not set. - <em>since Ant 1.9.14</em>.</td> - <td valign="top" align="center">No</td> ++ <em>since Ant 1.10.6</em>.</td> ++ <td>No</td> + </tr> </table> <h3>Parameters as nested elements</h3> -<table border="1" cellpadding="2" cellspacing="0"> +<table class="attr"> <tr> - <td valign="top"><b>Attribute</b></td> - <td valign="top"><b>Description</b></td> - <td align="center" valign="top"><b>Required</b></td> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> </tr> <tr> - <td valign="top">path</td> - <td valign="top">path of JAR files to sign. <em>since Ant 1.7</em></td> - <td valign="top" align="center">No</td> + <td>path</td> + <td>path of JAR files to sign. <em>since Ant 1.7</em></td> + <td>No</td> </tr> <tr> - <td valign="top">fileset</td> - <td valign="top">fileset of JAR files to sign. </td> - <td valign="top" align="center">No</td> + <td>fileset</td> + <td>fileset of JAR files to sign.</td> + <td>No</td> </tr> <tr> - <td valign="top">mapper</td> - <td valign="top">A mapper to rename jar files during signing</td> - <td valign="top" align="center">No, and only one can be supplied</td> + <td>mapper</td> + <td>A mapper to rename jar files during signing</td> + <td>No, and only one can be supplied</td> </tr> <tr> - <td valign="top">sysproperty</td> - <td valign="top">JVM system properties, with the syntax of Ant - <a href="exec.html#env">environment variables</a> </td> - <td valign="top" align="center">No, and only one can be supplied</td> + <td>sysproperty</td> + <td>JVM system properties, with the syntax of Ant <a href="exec.html#env">environment + variables</a></td> + <td>No, and only one can be supplied</td> </tr> - </table> + <tr> - <td valign="top">arg</td> - <td valign="top">Use this to specify a <code>keytool</code> ++ <td>arg</td> ++ <td>Use this to specify a <kbd>keytool</kbd> + <a href="../using.html#arg">command line argument</a> not + explicitly supported via an attribute. - <em>since Ant 1.9.14</em>.</td> - <td valign="top" align="center">No</td> ++ <em>since Ant 1.10.6</em>.</td> ++ <td>No</td> + </tr> + </table> - <h3>Examples</h3> -<p>For instructions on generating a code signing certificate, see the <a target="_blank" href="http://docs.oracle.com/javase/7/docs/technotes/tools/windows/keytool.html">keytool documentation</a> and/or instructions from your certificate authority.</p> - <blockquote><pre> +<p>For instructions on generating a code signing certificate, see +the <a href="https://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.html" +target="_top">keytool documentation</a> and/or instructions from your certificate authority.</p> + +<p>Sign the <samp>ant.jar</samp> with alias <q>apache-group</q> accessing the keystore and private +key via <q>secret</q> password.</p> +<pre> <signjar jar="${dist}/lib/ant.jar" -alias="apache-group" storepass="secret"/> -</pre></blockquote> -<p> - signs the ant.jar with alias "apache-group" accessing the - keystore and private key via "secret" password. -</p> - <blockquote><pre> + alias="apache-group" storepass="secret"/></pre> + +<p>Sign all JAR files matching the <samp>dist/**/*.jar</samp> pattern, copying them to the +directory <samp>signed</samp> afterwards. The flatten mapper means that they will all be copied to +this directory, not to subdirectories.</p> +<pre> <signjar destDir="signed" - alias="testonly" keystore="testkeystore" - storepass="apacheant" - preservelastmodified="true"> + alias="testonly" keystore="testkeystore" + storepass="apacheant" + preservelastmodified="true"> <path> - <fileset dir="dist" includes="**/*.jar" /> + <fileset dir="dist" includes="**/*.jar"/> </path> - <flattenmapper /> -</signjar> -</pre></blockquote> -<p> -Sign all JAR files matching the dist/**/*.jar pattern, copying them to the -directory "signed" afterwards. The flatten mapper means that they will -all be copied to this directory, not to subdirectories. + <flattenmapper/> +</signjar></pre> -</p> - <blockquote><pre> -<signjar - alias="testonly" keystore="testkeystore" - storepass="apacheant" - lazy="true" - > +<p>Sign all the JAR files in <samp>dist/**/*.jar</samp> <em>in-situ</em>. Lazy signing is used, so +the files will only be signed if they are not already signed.</p> +<pre> +<signjar alias="testonly" keystore="testkeystore" + storepass="apacheant" + lazy="true"> <path> - <fileset dir="dist" includes="**/*.jar" /> + <fileset dir="dist" includes="**/*.jar"/> </path> -</signjar> -</pre></blockquote> -<p> -Sign all the JAR files in dist/**/*.jar <i>in-situ</i>. Lazy signing is used, -so the files will only be signed if they are not already signed. -</p> - <blockquote><pre> -<signjar - alias="testonly" keystore="testkeystore" - storepass="apacheant" - sigalg="MD5withRSA" - digestalg="SHA1"> +</signjar></pre> + +<p>Sign all the JAR files in <samp>dist/**/*.jar</samp> using the digest algorithm SHA1 and the +signature algorithm MD5withRSA. This is especially useful when you want to use the JDK +7 <kbd>jarsigner</kbd> (which uses SHA256 and SHA256withRSA as default) to create signed jars that +will be deployed on platforms not supporting SHA256 and SHA256withRSA.</p> +<pre> +<signjar alias="testonly" keystore="testkeystore" + storepass="apacheant" + sigalg="MD5withRSA" + digestalg="SHA1"> <path> - <fileset dir="dist" includes="**/*.jar" /> + <fileset dir="dist" includes="**/*.jar"/> </path> -</signjar> -</pre></blockquote> -<p> -Sign all the JAR files in dist/**/*.jar using the digest algorithm SHA1 and the -signature algorithm MD5withRSA. This is especially useful when you want to use -the JDK 7 jarsigner (which uses SHA256 and SHA256withRSA as default) to create -signed jars that will be deployed on platforms not supporting SHA256 and -SHA256withRSA. -</p> +</signjar></pre> + <h3>About timestamp signing</h3> -<p>Timestamps record the date and time that a signature took place, allowing the signature to be verified as of that point in time. -With trusted timestamping, users can verify that signing occurred before a certificate's expiration or revocation. Without this timestamp, users can only verify the signature as of their current date.</p> +<p>Timestamps record the date and time that a signature took place, allowing the signature to be +verified as of that point in time. With trusted timestamping, users can verify that signing +occurred before a certificate's expiration or revocation. Without this timestamp, users can only +verify the signature as of their current date.</p> -<p> -Timestamped JAR files were introduced in Java1.5 and supported in Ant since -Ant 1.7. Since Ant 1.9.5, Ant can use unauthenticated proxies for this signing process. -</p> +<p>Timestamped JAR files were introduced in Java 5; they are supported <em>since Ant +1.7</em>. Unauthenticated proxies can be used to access TSAs <em>since Ant 1.9.5</em>.</p> -<p>Common public timestamp authorities include - <ul> - <li>http://timestamp.verisign.com</li> - <li>http://tsa.starfieldtech.com</li> - <li>https://timestamp.geotrust.com/tsa</li> - <li>Others (see your certificate authority)</li> - </ul></p> +<p>Common public timestamp authorities include</p> +<ul> + <li>http://timestamp.verisign.com</li> + <li>http://tsa.starfieldtech.com</li> + <li>https://timestamp.geotrust.com/tsa</li> + <li>Others (see your certificate authority)</li> +</ul> </body> </html> http://git-wip-us.apache.org/repos/asf/ant/blob/b99b6fa5/manual/Tasks/verifyjar.html ---------------------------------------------------------------------- diff --cc manual/Tasks/verifyjar.html index db140f0,b2df426..e519d23 --- a/manual/Tasks/verifyjar.html +++ b/manual/Tasks/verifyjar.html @@@ -55,84 -57,123 +55,115 @@@ the <var>jar</var> attribute. Nested pa jarsigner does not read the password from stdin during verification, so the password must be send via a command line interface and may be visible to other users of the system.</td> - <td valign="top" align="center">No.</td> + <td>No</td> </tr> <tr> - <td valign="top">keystore</td> - <td valign="top">keystore location</td> - <td valign="top" align="center">No</td> + <td>keystore</td> + <td>keystore location</td> + <td>No</td> </tr> <tr> - <td valign="top">storetype</td> - <td valign="top">keystore type</td> - <td valign="top" align="center">No</td> + <td>storetype</td> + <td>keystore type</td> + <td>No</td> </tr> <tr> - <td valign="top">keypass</td> - <td valign="top">password for private key (if different)</td> - <td valign="top" align="center">No</td> + <td>keypass</td> + <td>password for private key (if different)</td> + <td>No</td> </tr> <tr> - <td valign="top">certificates</td> - <td valign="top">(true | false) display information about certificates</td> - <td valign="top" align="center">No; default false</td> + <td>certificates</td> + <td>(<q>true|false</q>) display information about certificates</td> + <td>No; default <q>false</q></td> </tr> <tr> - <td valign="top">verbose</td> - <td valign="top">(true | false) verbose output when verifying</td> - <td valign="top" align="center">No; default false</td> + <td>verbose</td> + <td>(<q>true|false</q>) verbose output when verifying</td> + <td>No; default <q>false</q></td> </tr> <tr> - <td valign="top">strict</td> - <td valign="top">(true | false) strict checking when verifying.<br/><em>since Ant 1.9.1</em>.</td> - <td valign="top" align="center">No; default false</td> + <td>strict</td> + <td>(<q>true|false</q>) strict checking when verifying.<br/><em>since Ant 1.9.1</em>.</td> + <td>No; default <q>false</q></td> </tr> <tr> - <td valign="top">maxmemory</td> - <td valign="top">Specifies the maximum memory the jarsigner VM will use. Specified in the - style of standard java memory specs (e.g. 128m = 128 MBytes)</td> - <td valign="top" align="center">No</td> + <td>maxmemory</td> + <td>Specifies the maximum memory the <kbd>jarsigner</kbd> JVM will use. Specified in the style + of standard Java memory specs (e.g. <q>128m</q> = 128 MBytes)</td> + <td>No</td> </tr> <tr> - <td valign="top">executable</td> - <td valign="top">Specify a particular <code>jarsigner</code> executable - to use in place of the default binary (found in the same JDK as - Apache Ant is running in).<br/> - Must support the same command line options as the Sun JDK - jarsigner command. - <em>since Ant 1.8.0</em>.</td> - <td align="center" valign="top">No</td> - </tr> + <td>executable</td> + <td>Specify a particular <kbd>jarsigner</kbd> executable to use in place of the default binary + (found in the same JDK as Apache Ant is running in).<br/> Must support the same command line + options as the Sun JDK <kbd>jarsigner</kbd> command. <em>since Ant 1.8.0</em>.</td> + <td>No</td> + </tr> + <tr> - <td valign="top">providername</td> - <td valign="top">name of a cryptographic service provider's name ++ <td>providername</td> ++ <td>name of a cryptographic service provider's name + when listed in the security properties file. - <em>since Ant 1.9.14</em>.</td> - <td valign="top" align="center">No</td> ++ <em>since Ant 1.10.6</em>.</td> ++ <td>No</td> + </tr> + <tr> - <td valign="top">providerclass</td> - <td valign="top">name of a cryptographic service provider's master ++ <td>providerclass</td> ++ <td>name of a cryptographic service provider's master + class file when the service provider is not listed in the security + properties file. - <em>since Ant 1.9.14</em>.</td> - <td valign="top" align="center">No</td> ++ <em>since Ant 1.10.6</em>.</td> ++ <td>No</td> + </tr> + <tr> - <td valign="top">providerarg</td> - <td valign="top">Represents an optional string input argument for ++ <td>providerarg</td> ++ <td>Represents an optional string input argument for + the constructor of provider_class_name. Ignored + if <code>providerclass</code> is not set. - <em>since Ant 1.9.14</em>.</td> - <td valign="top" align="center">No</td> ++ <em>since Ant 1.10.6</em>.</td> ++ <td>No</td> + </tr> </table> <h3>Parameters as nested elements</h3> -<table border="1" cellpadding="2" cellspacing="0"> +<table class="attr"> <tr> - <td valign="top"><b>Attribute</b></td> - <td valign="top"><b>Description</b></td> - <td align="center" valign="top"><b>Required</b></td> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> </tr> <tr> - <td valign="top">path</td> - <td valign="top">path of JAR files to verify. <em>since Ant 1.7</em></td> - <td valign="top" align="center">No</td> + <td>path</td> + <td>path of JAR files to verify. <em>since Ant 1.7</em></td> + <td>No</td> </tr> <tr> - <td valign="top">fileset</td> - <td valign="top">fileset of JAR files to verify. </td> - <td valign="top" align="center">No</td> + <td>fileset</td> + <td>fileset of JAR files to verify.</td> + <td>No</td> </tr> <tr> - <td valign="top">sysproperty</td> - <td valign="top">JVM system properties, with the syntax of Ant - <a href="exec.html#env">environment variables</a> </td> - <td valign="top" align="center">No, and only one can be supplied</td> + <td>sysproperty</td> + <td>JVM system properties, with the syntax of Ant <a href="exec.html#env">environment + variables</a></td> + <td>No, and only one can be supplied</td> </tr> + <tr> - <td valign="top">arg</td> - <td valign="top">Use this to specify a <code>keytool</code> ++ <td>arg</td> ++ <td>Use this to specify a <kbd>keytool</kbd> + <a href="../using.html#arg">command line argument</a> not + explicitly supported via an attribute. - <em>since Ant 1.9.14</em>.</td> - <td valign="top" align="center">No</td> ++ <em>since Ant 1.10.6</em>.</td> ++ <td>No</td> + </tr> </table> - <h3>Examples</h3> - <blockquote><pre> -<verifyjar jar="${dist}/lib/ant.jar" -alias="apache-group" storepass="secret"/> -</pre></blockquote> -<p> - verifies the ant.jar with alias "apache-group" accessing the - keystore and private key via "secret" password. -</p> - +<p>Verify the <samp>ant.jar</samp> with alias <q>apache-group</q> accessing the keystore and private +key via <q>secret</q> password.</p> +<pre> +<verifyjar jar="${dist}/lib/ant.jar" + alias="apache-group" storepass="secret"/></pre> </body> </html> http://git-wip-us.apache.org/repos/asf/ant/blob/b99b6fa5/src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java ---------------------------------------------------------------------- diff --cc src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java index 2fadd12,b811797..fa2741f --- a/src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java @@@ -1,4 -1,4 +1,4 @@@ --/* ++g/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. @@@ -117,6 -120,15 +120,15 @@@ public abstract class AbstractJarSigner private String executable; /** + * Values for the providerName, providerClass, and providerArg options. + * - * @since Ant 1.9.14 ++ * @since Ant 1.10.6 + */ + private String providerName, providerClass, providerArg; + + private List<Commandline.Argument> additionalArgs = new ArrayList(); + + /** * Set the maximum memory to be used by the jarsigner process * * @param max a string indicating the maximum memory according to the JVM @@@ -231,6 -243,49 +243,49 @@@ } /** + * Sets the value for the -providerName command line argument. + * + * @param providerName the value for the -providerName command line argument + * - * @since Ant 1.9.14 ++ * @since Ant 1.10.6 + */ + public void setProviderName(String providerName) { + this.providerName = providerName; + } + + /** + * Sets the value for the -providerClass command line argument. + * + * @param providerClass the value for the -providerClass command line argument + * - * @since Ant 1.9.14 ++ * @since Ant 1.10.6 + */ + public void setProviderClass(String providerClass) { + this.providerClass = providerClass; + } + + /** + * Sets the value for the -providerArg command line argument. + * + * @param providerArg the value for the -providerArg command line argument + * - * @since Ant 1.9.14 ++ * @since Ant 1.10.6 + */ + public void setProviderArg(String providerArg) { + this.providerArg = providerArg; + } + + /** + * Adds a nested <arg> element that can be used to specify + * command line arguments not supported via specific attributes. + * - * @since Ant 1.9.14 ++ * @since Ant 1.10.6 + */ + public void addArg(Commandline.Argument arg) { + additionalArgs.add(arg); + } + + /** * init processing logic; this is retained through our execution(s) */ protected void beginExecution() { http://git-wip-us.apache.org/repos/asf/ant/blob/b99b6fa5/src/main/org/apache/tools/ant/types/Commandline.java ---------------------------------------------------------------------- diff --cc src/main/org/apache/tools/ant/types/Commandline.java index 4653c77,77d953b..a390990 --- a/src/main/org/apache/tools/ant/types/Commandline.java +++ b/src/main/org/apache/tools/ant/types/Commandline.java @@@ -177,6 -181,17 +177,17 @@@ public class Commandline implements Clo public void setSuffix(String suffix) { this.suffix = suffix != null ? suffix : ""; } + + /** + * Copies settings from a different argument. + * - * @since Ant 1.9.14 ++ * @since Ant 1.10.6 + */ + public void copyFrom(Argument other) { + this.parts = other.parts; + this.prefix = other.prefix; + this.suffix = other.suffix; + } /** * Return the constituent parts of this Argument.