Атрибут 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 "CN=Duke, OU=MyUnit, O=MyOrg, C=US""
</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
больше не нуждается в "
вокруг него. <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>
По крайней мере, раньше я делал это без проблем.