不批处理地从Nant调用Ant
我们有一个使用Nant脚本的自动构建过程,我们刚刚继承了一个Java项目,该项目有一个现有的、工作的Ant脚本。我到处搜索,似乎大多数人都使用批处理文件从Nant调用Ant脚本。这对我来说似乎有点烦人。有没有办法直接从Nant以任务格式调用Ant脚本 类似的问题用批处理文件解决,但我想不用批处理文件。不批处理地从Nant调用Ant,ant,nant,Ant,Nant,我们有一个使用Nant脚本的自动构建过程,我们刚刚继承了一个Java项目,该项目有一个现有的、工作的Ant脚本。我到处搜索,似乎大多数人都使用批处理文件从Nant调用Ant脚本。这对我来说似乎有点烦人。有没有办法直接从Nant以任务格式调用Ant脚本 类似的问题用批处理文件解决,但我想不用批处理文件。 <!-- calling the Ant build Process--> <target name="AntBuildProcess" description="Cre
<!-- 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>
然后在构建过程中,您只需在需要构建目标时调用它<代码>Ant是一个批处理文件。看一看,您将在%ant\u HOME%\bin
目录中看到一个名为ant.bat
的文件
Ant实际上是一个Java程序,因此您可以通过运行类org.apache.tools.Ant.launch.Launcher
,这基本上就是Ant.bat
文件所做的
然而,为什么要重新发明轮子?bat以正确的方式运行Java命令,为您提供更改其执行方式的选项,并确保一切设置正确
补遗 我明白了,与Ant不同,Nant总是调用
cmd.exe
,并使用后缀和%PATHEXEC%
来确定某个脚本是批处理脚本还是其他类型的脚本。因此,如果您想通过
将Ant用作批处理脚本来运行Ant,您可以执行以下操作:
<exec executable="cmd.exe"
dir="${working.dir}">
<arg value="/c"/>
<arg value="ant.bat"/>
</exec>
但是,在Nant中,您可以简单地这样做:
<exec program="ant"
workingdir=${working.dir}"/>
谢谢您的回答。我所说的批处理文件是大多数人创建的,目的是以某种方式直接调用Ant。我想知道是否有一个任务只用于从Nant调用Ant脚本。实际上,看看Nant,我看到Nant会将批处理脚本视为可执行文件。Nant总是生成一个cmd.exe
。在Unix中,exec
命令将查看该命令是否以x03533
或#开头代码>。如果是这样,它会考虑一个SeBand并生成指定的过程。这在Win32上不起作用,这就是为什么需要使用cmd.exe
调用ant
。Nant没有这个问题,所以说您的可执行文件是ant
应该可以。谢谢。我将尝试一下。直接调用Ant,传递构建文件,效果很好。其他人建议创建一个单独的批处理文件,并称之为批处理文件,这看起来很混乱。谢谢你的帮助。