从Nant调用Ant而不批处理

时间:2014-04-01 15:48:23

标签: ant nant

我们有一个使用Nant脚本的自动构建过程,我们只是继承了一个具有现有工作Ant脚本的Java项目。我已经搜遍了所有人,似乎大多数人使用批处理文件从Nant调用Ant脚本。这对我来说似乎有些苛刻。有没有办法直接从Nant以任务格式调用Ant脚本?

This类似的问题用批处理文件解决了这个问题,但我想不用它来做。

2 个答案:

答案 0 :(得分:1)

<!-- calling the Ant build Process-->
    <target name="AntBuildProcess" description="Created to call the Ant build during this NAnt build process" >
        <echo message="Starting the Ant Build Process..." />
        <exec program="ant" commandline='-buildfile YourAntBuild.xml' failonerror="true"/>
    </target>

然后在构建过程中,您只需在需要构建目标时调用此目标。 <call target="AntBuildProcess" />

答案 1 :(得分:0)

Ant 批处理文件。看一下,您会在ant.bat目录中看到名为%ANT_HOME%\bin的文件。

Ant实际上是一个Java程序,所以你可以launch it from the java command运行类org.apache.tools.ant.launch.Launcher,这基本上就是ant.bat文件正在做的事情。

然而,为什么重新发明轮子? ant.bat以正确的方式运行Java命令,为您提供更改执行方式的选项,并确保一切设置正确。


附录

我知道,Nant与Ant不同,它总是会调用cmd.exe并使用后缀和%PATHEXEC%来确定某些东西是批处理脚本还是其他类型的脚本。因此,如果您想通过<exec/>使用Ant作为批处理脚本运行Ant,您可以这样做:

<exec executable="cmd.exe"
    dir="${working.dir}">
    <arg value="/c"/>
    <arg value="ant.bat"/>
</exec>

但是,在南特,你可以这样做:

<exec program="ant"
    workingdir=${working.dir}"/>