我正在编写一个用于执行.bat文件的构建脚本,用户在按enter键执行ant脚本之前提供输入。我已经使用过bat文件,它工作得很好,但我以前从未尝试过将bat文件集成到构建脚本中,特别是需要输入的构建脚本。没有输入组件的构建脚本应该是这样的,我认为:
<target name="css-val">
<exec dir="M:burnjc_viewServiceTeamsTeam 4ReportCssValidationbin" 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
switch传递参数:
-D<property>=<value> Defines a property name-value pair on the command line.
,您可以使用${<property>}
例如:
<target name="css-val">
<exec dir="M:burnjc_viewServiceTeamsTeam 4ReportCssValidationbin" executable="cmd" os="Windows 7">
<arg line="/c cssvalFile.bat ${file1} ${file2}"/>
</exec>
</target>
和运行时
ant -Dfile1=somefile -Dfile2=somefile build.xml
希望能有所帮助
虽然Sanjeev的回答是我在这里讨论的原因,因为他展示了输入与参数行在同一行,但我认为在提示用户输入的地方也包含一个替代答案是有指导意义的(这也允许输入验证,这是我将在后面展示的一个特性)。当我改进构建脚本时,我可能会更新这段代码,以显示其他有用的特性:
<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_viewServiceTeamsTeam 4ReportCssValidationbin" executable="cmd" os="Windows 7">
<arg line="/c cssValSoapFile.bat ${validate.file} ${report.file}"/>
</exec>
</target>
如果其中一个参数中有空格,上面的操作将不起作用,因为每个参数都用空格分隔。在这种情况下,使用arg value而不是arg line。还有更多的东西要写,但是当有空格的时候它可以工作。