【问题标题】:Disabling warnings generated by java ant禁用 java ant 生成的警告
【发布时间】:2011-12-25 15:40:09
【问题描述】:

我正在使用 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.

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

【问题讨论】:

    标签: java swing jakarta-ee ant


    【解决方案1】:

    exec 任务上的 command 属性已被弃用,并且自我第一次开始使用 Ant 时的 Ant 1.5 以来一直存在。我怀疑它会在很长一段时间内保持弃用。除了警告之外没有任何问题,但您不妨使用 execute 属性来替换它。

    唯一的问题是execute 属性(与command 属性不同)假定命令名称可以包含空格,因此您不能简单地将整个命令塞进execute 属性中。相反,您必须使用&lt;arg&gt; 子任务来传递命令的参数:

    <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 可能会出现问题。但是,您可以使用&lt;arg value="&gt; 子任务来解决这个问题:

    <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 字段的参数不再需要&amp;quot;&lt;arg value&gt; 明白这是一个单一的值,尽管有空格。

    您也可以组合&lt;arg&gt; 子任务的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>
    

    至少,我之前已经做到了,没有任何问题。

    【讨论】:

      【解决方案2】:

      是的,请阅读警告。不要使用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>
      

      【讨论】:

        猜你喜欢
        • 2010-09-12
        • 2011-01-03
        • 2010-09-26
        • 2017-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-26
        • 2013-01-27
        相关资源
        最近更新 更多