禁用java ant生成的警告



我使用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;"/>

尽管该命令按预期工作,但在每一行之后,我都得到了几个警告:

  [exec] The command attribute is deprecated.
   [exec] Please use the executable attribute and nested arg elements.

我很好奇,除了不使用嵌套参数之外,是否有任何方法可以抑制这些警告。该脚本生成大量文本输出,并且警告使跟踪输出变得更加困难。

exec任务上的command属性已经被弃用了,从Ant 1.5开始,当我第一次开始使用Ant时。我怀疑在相当长的一段时间内将被弃用。除了警告之外没有任何问题,但是您不妨使用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>

最后一个参数-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>

注意,-dname字段的参数不再需要围绕它的&quot;<arg value>理解这是一个单独的值,尽管有空格。

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

    <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>

至少,我以前做过没有任何问题。

是的,请阅读警告。不要使用command属性;使用executable和嵌套的arg元素

http://ant.apache.org/manual/Tasks/exec.html

所以它看起来像这样:

<exec executable="keytool">
 <arg value="-genkey"/>
 <!-- I'll leave the rest for you; read the docs -->
</exec>

相关内容

  • 没有找到相关文章

最新更新