Я пишу сценарий сборки, который предназначен для выполнения.bat файла, с пользователем, предоставляющим ввод, прежде чем нажимать enter, чтобы выполнить скрипт ant. Я уже использовал файл bat, и он работает хорошо, но я никогда не пытался интегрировать bat файл в скрипт сборки раньше, особенно тот, который требует ввода. Сценарий сборки без входного компонента должен выглядеть так, как я полагаю:
<target name="css-val">
<exec dir="M:\burnjc_view\ServiceTeams\Team 4\Report\CssValidation\bin" executable="cmd" os="Windows 7">
<arg line="/c cssvalFile.bat"/>
</exec>
</target>
Файл bat, который требует ввода для запуска, выглядит следующим образом:
java -jar css-validator.jar -output gnu file:///%1 > ..\output\%2
Ввод 1 - это файл и каталог файла, который должен быть проверен css-validator.jar, а 2 - имя файла.
Как получить скрипт ant для ввода ввода в файл bat, который он выполняет, чтобы он работал почти так же, как кто-то сам выполнял файл bat? Я знаю, что первая часть пользовательского ввода для запуска всего этого будет "ant css-val", но потом я не знаю, как передать вход в файл bat.
Вы можете передавать параметры с -D
переключателя -D
:
-D<property>=<value> Defines a property name-value pair on the command line.
и вы можете обратиться к этому параметру с помощью ${<property>}
Например:
<target name="css-val">
<exec dir="M:\burnjc_view\ServiceTeams\Team 4\Report\CssValidation\bin" executable="cmd" os="Windows 7">
<arg line="/c cssvalFile.bat ${file1} ${file2}"/>
</exec>
</target>
и во время работы
ant -Dfile1=somefile -Dfile2=somefile build.xml
Надеюсь это поможет
Хотя ответ Санджива - это то, что привело меня сюда из-за того, как он показал, что входные данные идут по той же линии, что и строка arg, я подумал, что было бы поучительно также включить альтернативный ответ, когда пользователю предлагается ввести входные данные (это также позволяет вводить данные валидация, функция, которую я покажу позже). Поскольку я уточняю сценарий сборки, я могу обновить этот код, а также показать другие полезные функции:
<target name="css-val">
<input
message="Please enter directory and filename of file to be validated: "
addproperty="validate.file"
/>
<input
message="Enter directory and file name to use for output report: "
addproperty="report.file"
/>
<exec dir=""M:\burnjc_view\ServiceTeams\Team 4\Report\CssValidation\bin" executable="cmd" os="Windows 7">
<arg line="/c cssValSoapFile.bat ${validate.file} ${report.file}"/>
</exec>
</target>
Вышеупомянутое не будет работать, если в одном из аргументов есть пробелы, так как каждый аргумент разделяется пробелом. В этой ситуации используйте значение arg вместо строки arg. Больше писать, но он работает, когда есть пробелы.