Отключение предупреждений, генерируемых Java-муравьем - PullRequest
4 голосов
/ 25 декабря 2011

Я использую 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.

Мне любопытно, можно ли как-то исключить эти предупреждения, кроме как не использовать вложенные аргументы. Сценарий генерирует много текстового вывода, а предупреждения усложняют отслеживание вывода.

Ответы [ 2 ]

7 голосов
/ 26 декабря 2011

Атрибут command в задаче exec устарел и был с 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> понимает, что это одно значение, несмотря на пробелы.

Можно также комбинировать типы line и value для подзадачи <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>

По крайней мере, раньше я делал это без проблем.

3 голосов
/ 25 декабря 2011

Да, прочитайте предупреждение.Не используйте атрибут 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...