. 使用Ant运行windows的批处理文件
要在 Ant 内运行一个外部程序 , 应使用 <exec> 任务 . 它允许你执行下列操作 :
l 指定程序名和要传入的参数 .
l 命名运行目录 .
l 使用 failonerror 标志来控制当应用程序失败时是否停止构建 .
l 指定一个最大程序持续时间 , 时间超过则中止程序 . 任务在这时被认为是失败 , 但是至少构建会中止 , 而不是挂起 , 这对于自动构建是至关重要的 .
l 将输出存到一个文件或特性 .
l 指定 java 调用本地程序时需要预先设定的环境变量 .
下面来看一个例子 :
批处理文件 :
Test.bat
P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>@echo off
echo Hello > test.txt
build.xml
SPAN lang=EN-US style="FONT-SIZE: 10pt; BACKGROUND: white; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
<?xml version="1.0"?>
<projectname="batch"default="extract"basedir=".">
<targetname="extract">
<execexecutable ="cmd">
<argline="/c a.bat"/>
</exec>
</target>
</project>
使用 executable 元素标记指定使用的命令 , 具体用法可以在命令行下面输入 help cmd 查看 . 如果你希望在运行批处理发生错误时中止构建需要设定 failonerror="on". 加入你的外部程序在某个时刻挂起 , 也许是在与远程站点对话 , 而你不希望构建永远被挂起 ,Ant 提供了 timeout 这个属性 , 他是一个以毫秒为单位的数字 . 下面看一下如何使用 Ant 来运行 tomcat.
启动 tomcat 需要两个环境变量 CATALINA_HOME , JAVA_HOME, 如果你在环境变量中已经设定 , 在 Ant 中就不需要进行处理 , 如果没有需要使用 <env> 属性来设定 , 你也可以使用 <env> 属性覆盖你以前的环境变量 .
SPAN lang=EN-US style="FONT-SIZE: 10pt; BACKGROUND: white; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
<?xml version="1.0"?>
<projectname="batch"default="tomcat-start"basedir=".">
<propertyname="tomcat.dir"value="C:/Tomcat5"></property>
<targetname="tomcat-start">
<execdir="${tomcat.dir}/bin"executable="cmd">
<envkey="CATALINA_HOME"path="${tomcat.dir}"/>
<argvalue="/C startup.bat"/>
</exec>
</target>
</project>
2. 使用 Ant 运行 shell 文件
由于 windowsXP 的 cmd 默认没有安装 ps,bash 等命令 , 所以我们需要借助的三方的软件来实现这个功能 , 这里使用 cgywin, 将 cgywin 的 bin 目录加到环境变量的 Path 里面 ( 下面使用 Ant 运行 cvs 也会用到 ).
SPAN lang=EN-US style="FONT-SIZE: 10pt; BACKGROUND: white; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
<?xml version="1.0"?>
<projectname="batch"default="shell"basedir=".">
<propertyname="tomcat.dir"value="C:/Tomcat5"></property>
<targetname="shell">
<execdir="${tomcat.dir}/bin"executable="bash">
<envkey="CATALINA_HOME"path="${tomcat.dir}"/>
<argvalue="startup.sh"/>
</exec>
</target>
</project>
3. 使用 Ant 运行 cvs
Ant 内置 cvs 属性 , 可以很方便的使用 cvs:
SPAN lang=EN-US style="FONT-SIZE: 10pt; BACKGROUND: white; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
<?xml version="1.0"?>
<projectname="batch"default="shell"basedir=".">
<propertyname="cvs.root"value="..."></property>
<targetname="cvs">
<cvscvsroot="cvs.root"command="checkout ../.."/>
</target>
</project>
要在 Ant 内运行一个外部程序 , 应使用 <exec> 任务 . 它允许你执行下列操作 :
l 指定程序名和要传入的参数 .
l 命名运行目录 .
l 使用 failonerror 标志来控制当应用程序失败时是否停止构建 .
l 指定一个最大程序持续时间 , 时间超过则中止程序 . 任务在这时被认为是失败 , 但是至少构建会中止 , 而不是挂起 , 这对于自动构建是至关重要的 .
l 将输出存到一个文件或特性 .
l 指定 java 调用本地程序时需要预先设定的环境变量 .
下面来看一个例子 :
批处理文件 :
Test.bat
P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>@echo off
echo Hello > test.txt
build.xml
SPAN lang=EN-US style="FONT-SIZE: 10pt; BACKGROUND: white; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
<?xml version="1.0"?>
<projectname="batch"default="extract"basedir=".">
<targetname="extract">
<execexecutable ="cmd">
<argline="/c a.bat"/>
</exec>
</target>
</project>
使用 executable 元素标记指定使用的命令 , 具体用法可以在命令行下面输入 help cmd 查看 . 如果你希望在运行批处理发生错误时中止构建需要设定 failonerror="on". 加入你的外部程序在某个时刻挂起 , 也许是在与远程站点对话 , 而你不希望构建永远被挂起 ,Ant 提供了 timeout 这个属性 , 他是一个以毫秒为单位的数字 . 下面看一下如何使用 Ant 来运行 tomcat.
启动 tomcat 需要两个环境变量 CATALINA_HOME , JAVA_HOME, 如果你在环境变量中已经设定 , 在 Ant 中就不需要进行处理 , 如果没有需要使用 <env> 属性来设定 , 你也可以使用 <env> 属性覆盖你以前的环境变量 .
SPAN lang=EN-US style="FONT-SIZE: 10pt; BACKGROUND: white; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
<?xml version="1.0"?>
<projectname="batch"default="tomcat-start"basedir=".">
<propertyname="tomcat.dir"value="C:/Tomcat5"></property>
<targetname="tomcat-start">
<execdir="${tomcat.dir}/bin"executable="cmd">
<envkey="CATALINA_HOME"path="${tomcat.dir}"/>
<argvalue="/C startup.bat"/>
</exec>
</target>
</project>
2. 使用 Ant 运行 shell 文件
由于 windowsXP 的 cmd 默认没有安装 ps,bash 等命令 , 所以我们需要借助的三方的软件来实现这个功能 , 这里使用 cgywin, 将 cgywin 的 bin 目录加到环境变量的 Path 里面 ( 下面使用 Ant 运行 cvs 也会用到 ).
SPAN lang=EN-US style="FONT-SIZE: 10pt; BACKGROUND: white; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
<?xml version="1.0"?>
<projectname="batch"default="shell"basedir=".">
<propertyname="tomcat.dir"value="C:/Tomcat5"></property>
<targetname="shell">
<execdir="${tomcat.dir}/bin"executable="bash">
<envkey="CATALINA_HOME"path="${tomcat.dir}"/>
<argvalue="startup.sh"/>
</exec>
</target>
</project>
3. 使用 Ant 运行 cvs
Ant 内置 cvs 属性 , 可以很方便的使用 cvs:
SPAN lang=EN-US style="FONT-SIZE: 10pt; BACKGROUND: white; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
<?xml version="1.0"?>
<projectname="batch"default="shell"basedir=".">
<propertyname="cvs.root"value="..."></property>
<targetname="cvs">
<cvscvsroot="cvs.root"command="checkout ../.."/>
</target>
</project>