Передача параметров командной строки для таргетинга, которая использует их в exec - программирование
Подтвердить что ты не робот

Передача параметров командной строки для таргетинга, которая использует их в exec

ant bootstrap arg1 arg2 arg3

Мне нужно эхо "arg1 arg2 arg3", чтобы я мог вызвать программу с этими аргументами

Поиск в Интернете должен работать, но не работает.

 <target name="bootstrap">
     <echo>${arg0} ${arg1} ${arg2} </echo>
     <!--exec executable="cmd">
        <arg value="${arg0}"/>
        <arg value="${arg1}"/>
        <arg value="${arg2}"/>
     </exec-->
 </target>

также любые мысли о том, что, если пользователь передает в 5 аргументов или 1 аргумент. Мне нужно потерпеть неудачу, он не имеет правильного количества аргументов.

4b9b3361

Ответ 1

Нет.

Вы не можете передавать аргументы, которые будут использоваться внутри файла сборки таким образом. ant bootstrap arg1 arg2 arg3 будет разрешен, поскольку вы пытаетесь вызвать следующие цели bootstrap, arg1, arg2, arg3 - и, очевидно, существует только цель bootstrap.

Если вы хотите передать аргументы, которые будут использоваться в файле сборки, вам необходимо использовать формат -DpropertyName=value. Например:

ant bootstrap -Darg1=value1 -Darg2=value2 -Darg3=value3

Для других способов вы можете написать embed script в файле сборки (например, beanshell или javascript с ant script поддержкой libs) для обработки аргументов вначале. Например, вы можете передать аргументы следующим образом:

ant bootstrap -Dargs=value1,value2,value3,...

и теперь у вас есть свойство с именем args со значением "value1, value2, value3,..." (для... Я имею в виду, что пользователь может ввести более трех значений). Вы можете использовать beanshell для разделения args на arg1, arg2 и arg3 на ,, а также выполнить некоторую проверку...

<script language="beanshell" classpathref="classpath-that-includes-the-beanshell-lib">
    String[] args = project.getProperty("args").split(",");
    project.setUserProperty("arg1", args[0].trim());
    project.setUserProperty("arg2", args[1].trim());
    project.setUserProperty("arg3", args[2].trim());
</script>