Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不批处理地从Nant调用Ant_Ant_Nant - Fatal编程技术网

不批处理地从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

我们有一个使用Nant脚本的自动构建过程,我们刚刚继承了一个Java项目,该项目有一个现有的、工作的Ant脚本。我到处搜索,似乎大多数人都使用批处理文件从Nant调用Ant脚本。这对我来说似乎有点烦人。有没有办法直接从Nant以任务格式调用Ant脚本

类似的问题用批处理文件解决,但我想不用批处理文件。


<!-- 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,传递构建文件,效果很好。其他人建议创建一个单独的批处理文件,并称之为批处理文件,这看起来很混乱。谢谢你的帮助。