禁用java ant生成的警告

use*_*689 4 java ant swing java-ee

我正在使用java ant来为某些实体生成证书和密钥库,稍后我将在java应用程序中使用它.该应用程序仅用于学习目的,我知道以纯文本格式存储密码是一个坏主意.

我正在使用的命令是:

<exec command="keytool -genkey -alias test -keyalg DSA -keysize 1024 
     -keystore keyst.ks -keypass pass -storepass pass -dname &quot;
     CN=Duke, OU=MyUnit, O=MyOrg, C=US&quot;"/>
Run Code Online (Sandbox Code Playgroud)

虽然命令按预期工作,但在每行后我都会收到几条警告:

  [exec] The command attribute is deprecated.
Run Code Online (Sandbox Code Playgroud)
   [exec] Please use the executable attribute and nested arg elements.
Run Code Online (Sandbox Code Playgroud)

我很好奇是否有任何办法可以压制这些警告,除了不使用嵌套的args.该脚本生成大量文本输出,警告使得跟踪输出更加困难.

Dav*_* W. 7

这个任务的command属性exec已被弃用,从我第一次开始使用Ant时开始就是Ant 1.5.我怀疑它会在相当长的时间内被弃用.除了警告之外没有问题,但您也可以使用execute替换它的属性.

唯一的问题是execute属性(与属性不同command)假定命令名称可以包含空格,因此您不能简单地将整个命令塞入execute属性中.相反,您必须使用子<arg>工具传入命令的参数:

<exec executable="keytool">
    <arg line="-genkey -alias test -keyalg DSA -keysize 1024 -keystore keyst.ks -keypass pass -storepass pass -dname &quot;CN=Duke, OU=MyUnit, O=MyOrg, C=US&quot;"
</exec>
Run Code Online (Sandbox Code Playgroud)

最后一个参数-dname可能会出现问题.但是,您可以使用<arg value=">子任务来解决此问题:

<exec executable="keytool">
    <arg value="-genkey"/>
    <arg value="-alias"/>
    <arg value="test"/>
    <arg value="-keyalg"/>
    <arg value="DSA"/>
    <arg value="-keysize"/>
    <arg value="1024"/>
    <arg value="-keystore"/>
    <arg value="keyst.ks"/>
    <arg value="-keypass"/>
    <arg value="pass"/>
    <arg value="-storepass"/>
    <arg value="pass"/>
    <arg value="-dname"/>
    <arg value="CN=Duke, OU=MyUnit, O=MyOrg, C=US"/>
</exec>
Run Code Online (Sandbox Code Playgroud)

请注意,该-dname字段的参数不再需要&quot;它.该<arg value>明白这一点是尽管空白单个值.

您也可以组合子任务的类型linevalue类型<arg>:

    <exec executable="keytool">
        <arg line="-genkey -alias test -keyalg DSA -keysize 1024"/>
        <arg line="-keystore keyst.ks -keypass pass123 -storepass pass123 -dname"/>
        <arg value="CN=Duke, OU=MyUnit, O=MyOrg, C=US"/>
    </exec>
Run Code Online (Sandbox Code Playgroud)

至少,我之前没有遇到任何问题.