我们有一个使用Nant脚本的自动构建过程,我们只是继承了一个具有现有工作Ant脚本的Java项目。我已经搜遍了所有人,似乎大多数人使用批处理文件从Nant调用Ant脚本。这对我来说似乎有些苛刻。有没有办法直接从Nant以任务格式调用Ant脚本?
This类似的问题用批处理文件解决了这个问题,但我想不用它来做。
答案 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}"/>