add nested <args> to signjar and verifyjar
Project: http://git-wip-us.apache.org/repos/asf/ant/repo Commit: http://git-wip-us.apache.org/repos/asf/ant/commit/d100b900 Tree: http://git-wip-us.apache.org/repos/asf/ant/tree/d100b900 Diff: http://git-wip-us.apache.org/repos/asf/ant/diff/d100b900 Branch: refs/heads/master Commit: d100b900324ad91f3de6e8c323720e1676bbb28d Parents: a5796b5 Author: Stefan Bodewig <bode...@apache.org> Authored: Fri Sep 28 18:23:25 2018 +0200 Committer: Stefan Bodewig <bode...@apache.org> Committed: Fri Sep 28 18:23:25 2018 +0200 ---------------------------------------------------------------------- WHATSNEW | 4 +++ manual/Tasks/signjar.html | 10 ++++++- manual/Tasks/verifyjar.html | 10 ++++++- .../ant/taskdefs/AbstractJarSignerTask.java | 28 ++++++++++++++++++++ .../org/apache/tools/ant/types/Commandline.java | 11 ++++++++ 5 files changed, 61 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ant/blob/d100b900/WHATSNEW ---------------------------------------------------------------------- diff --git a/WHATSNEW b/WHATSNEW index 6085274..6cd11da 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -28,6 +28,10 @@ Other changes: 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 ===================================== http://git-wip-us.apache.org/repos/asf/ant/blob/d100b900/manual/Tasks/signjar.html ---------------------------------------------------------------------- diff --git a/manual/Tasks/signjar.html b/manual/Tasks/signjar.html index f6a7a37..88bdb43 100644 --- a/manual/Tasks/signjar.html +++ b/manual/Tasks/signjar.html @@ -238,7 +238,15 @@ block</td> <a href="exec.html#env">environment variables</a> </td> <td valign="top" align="center">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> + <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> + </tr> +</table> <h3>Examples</h3> http://git-wip-us.apache.org/repos/asf/ant/blob/d100b900/manual/Tasks/verifyjar.html ---------------------------------------------------------------------- diff --git a/manual/Tasks/verifyjar.html b/manual/Tasks/verifyjar.html index bf442b7..b2df426 100644 --- a/manual/Tasks/verifyjar.html +++ b/manual/Tasks/verifyjar.html @@ -152,7 +152,15 @@ supported <a href="exec.html#env">environment variables</a> </td> <td valign="top" align="center">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> + <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> + </tr> +</table> <h3>Examples</h3> http://git-wip-us.apache.org/repos/asf/ant/blob/d100b900/src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java ---------------------------------------------------------------------- diff --git a/src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java b/src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java index b15d2bc..b811797 100644 --- a/src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/AbstractJarSignerTask.java @@ -19,11 +19,14 @@ package org.apache.tools.ant.taskdefs; import java.io.File; +import java.util.ArrayList; +import java.util.List; import java.util.Vector; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; import org.apache.tools.ant.filters.LineContainsRegExp; +import org.apache.tools.ant.types.Commandline; import org.apache.tools.ant.types.Environment; import org.apache.tools.ant.types.FileSet; import org.apache.tools.ant.types.Path; @@ -123,6 +126,8 @@ public abstract class AbstractJarSignerTask extends Task { */ private String providerName, providerClass, providerArg; + private List<Commandline.Argument> additionalArgs = new ArrayList(); + /** * Set the maximum memory to be used by the jarsigner process * @@ -271,6 +276,16 @@ public abstract class AbstractJarSignerTask extends Task { } /** + * Adds a nested <arg> element that can be used to specify + * command line arguments not supported via specific attributes. + * + * @since Ant 1.9.14 + */ + public void addArg(Commandline.Argument arg) { + additionalArgs.add(arg); + } + + /** * init processing logic; this is retained through our execution(s) */ protected void beginExecution() { @@ -351,6 +366,10 @@ public abstract class AbstractJarSignerTask extends Task { for (Environment.Variable variable : sysProperties.getVariablesVector()) { declareSysProperty(cmd, variable); } + + for (Commandline.Argument arg : additionalArgs) { + addArgument(cmd, arg); + } } /** @@ -473,4 +492,13 @@ public abstract class AbstractJarSignerTask extends Task { protected void addValue(final ExecTask cmd, String value) { cmd.createArg().setValue(value); } + + /** + * add an argument to a command + * @param cmd command to manipulate + * @param arg argument to add + */ + protected void addArgument(final ExecTask cmd, Commandline.Argument arg) { + cmd.createArg().copyFrom(arg); + } } http://git-wip-us.apache.org/repos/asf/ant/blob/d100b900/src/main/org/apache/tools/ant/types/Commandline.java ---------------------------------------------------------------------- diff --git a/src/main/org/apache/tools/ant/types/Commandline.java b/src/main/org/apache/tools/ant/types/Commandline.java index a1859ba..77d953b 100644 --- a/src/main/org/apache/tools/ant/types/Commandline.java +++ b/src/main/org/apache/tools/ant/types/Commandline.java @@ -183,6 +183,17 @@ public class Commandline implements Cloneable { } /** + * Copies settings from a different argument. + * + * @since Ant 1.9.14 + */ + public void copyFrom(Argument other) { + this.parts = other.parts; + this.prefix = other.prefix; + this.suffix = other.suffix; + } + + /** * Return the constituent parts of this Argument. * @return an array of strings. */