我正在编写一个构建脚本,用于执行.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文件一样?我知道运行整个事情的用户输入的第一部分将是&#34; ant css-val&#34;,但之后我不知道如何将输入传递给bat文件。
答案 0 :(得分:2)
您可以使用-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
希望这有帮助
答案 1 :(得分:2)
虽然Sanjeev的回答是让我在这里的原因,因为他表明输入与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行。写的更多,但是当有空格时它会起作用。