使用ant脚本执行批处理文件

时间:2011-05-19 06:30:22

标签: ant batch-file cruisecontrol

这是我的批处理文件。它位于C:\Work\6.70_Extensions\Lab Tools\文件夹中。

ANT.BAT:

set CLASSPATH=%CLASSPATH%;.;c:\JavaMail\javamail-1.3\mail.jar;c:\JavaMail\javamail-1.3\mailapi.jar;c:\JavaMail\javamail-1.3\pop3.jar;c:\JavaMail\javamail-1.3\smtp.jar;c:\JavaMail\jaf-1.0.2\activation.jar
CALL "C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat"
@echo on

%ANT_HOME%\bin\ant -logger org.apache.tools.ant.listener.MailLogger -q -buildfile "Master Build.xml"
pause

ant.bat一起,我有一个Master Build.xml文件位于同一个文件夹中。

当我双击ant.bat时,它将正确执行Master Build.xml ant脚本。

但是,每当我尝试使用其他应用程序打开批处理文件的绝对路径时,它总是声明Master Build.xml file does not exist!

我尝试使用控制台应用程序和另一个ANT脚本(通过Cruisecontrol框架)打开绝对路径,但两者都给出了相同的错误。这里有什么错误?

这里的信息是我用cruisecontrol完成的:

  1. 创建config.xml(设置构建的间隔)
  2. 创建nightbuild.xml(以便config.xml进入其中以执行所需任务)
  3. nightbuild.xml将运行多个控制台应用程序来对文件进行排序,从版本控制中检出文件等
  4. 最后,nightbuild.xml将执行ant.bat文件来执行构建
  5. 这些文件config.xmlnightbuild.xml位于C:\build

1 个答案:

答案 0 :(得分:1)

当您从包含Master Build.xml的目录以外的目录执行时,Ant将无法找到它希望位于当前工作目录中的构建文件。

您可以设置一个额外的环境变量来指定构建文件的路径,例如

%ANT_HOME%\bin\ant -buildfile "%MASTER_BUILD%\Master Build.xml"

如果您将变量设置为绝对路径(例如C:\Work\6.70_Extensions\Lab Tools),那么它将始终有效。如果您使用相对路径(例如.\Lab Tools),那么只有从相对根目录执行时它才会起作用。

(顺便说一句,如果你使用名字中没有空格的构建文件,生活可能会更容易,例如master_build.xml而不是Master Build.xml。)