.
使用Ant運(yùn)行windows的批處理文件
??????
要在
Ant
內(nèi)運(yùn)行一個(gè)外部程序
,
應(yīng)使用
<exec>
任務(wù)
.
它允許你執(zhí)行下列操作
:
l????????
指定程序名和要傳入的參數(shù)
.
l????????
命名運(yùn)行目錄
.
l????????
使用
failonerror
標(biāo)志來控制當(dāng)應(yīng)用程序失敗時(shí)是否停止構(gòu)建
.
l????????
指定一個(gè)最大程序持續(xù)時(shí)間
,
時(shí)間超過則中止程序
.
任務(wù)在這時(shí)被認(rèn)為是失敗
,
但是至少構(gòu)建會中止
,
而不是掛起
,
這對于自動構(gòu)建是至關(guān)重要的
.
l????????
將輸出存到一個(gè)文件或特性
.
l????????
指定
java
調(diào)用本地程序時(shí)需要預(yù)先設(shè)定的環(huán)境變量
.
??????
下面來看一個(gè)例子
:
批處理文件
:
Test.bat
P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left>@echo offecho 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
元素標(biāo)記指定使用的命令
,
具體用法可以在命令行下面輸入
help cmd
查看
.
如果你希望在運(yùn)行批處理發(fā)生錯誤時(shí)中止構(gòu)建需要設(shè)定
failonerror="on".
加入你的外部程序在某個(gè)時(shí)刻掛起
,
也許是在與遠(yuǎn)程站點(diǎn)對話
,
而你不希望構(gòu)建永遠(yuǎn)被掛起
,Ant
提供了
timeout
這個(gè)屬性
,
他是一個(gè)以毫秒為單位的數(shù)字
.
下面看一下如何使用
Ant
來運(yùn)行
tomcat.
??????
啟動
tomcat
需要兩個(gè)環(huán)境變量
CATALINA_HOME
, JAVA_HOME,
如果你在環(huán)境變量中已經(jīng)設(shè)定
,
在
Ant
中就不需要進(jìn)行處理
,
如果沒有需要使用
<env>
屬性來設(shè)定
,
你也可以使用
<env>
屬性覆蓋你以前的環(huán)境變量
.
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
運(yùn)行
shell
文件
?????
由于
windowsXP
的
cmd
默認(rèn)沒有安裝
ps,bash
等命令
,
所以我們需要借助的三方的軟件來實(shí)現(xiàn)這個(gè)功能
,
這里使用
cgywin,
將
cgywin
的
bin
目錄加到環(huán)境變量的
Path
里面
(
下面使用
Ant
運(yùn)行
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
運(yùn)行
cvs
??????
Ant
內(nèi)置
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>
|
如果你的
Documents and Settings
中有
.cvspass
文件
,
那么可以不用設(shè)定
cvsroot
,
Ant
會自動尋找
.