如何将ant目录更改为从不同文件夹执行ant任务

如何将ant目录更改为从不同文件夹执行ant任务,ant,Ant,有两个生成文件放在不同的文件夹中 folder1/build.xml folder1/subfolder/sub/build.xml 我在folder1/build.xml <exec dir="." executable="${tools.versionupdater.exe}" failonerror="true"> <arg value="${dist.path}" /> <arg value="${build.version}" /> &l

有两个生成文件放在不同的文件夹中

folder1/build.xml

folder1/subfolder/sub/build.xml

我在
folder1/build.xml

<exec dir="." executable="${tools.versionupdater.exe}" failonerror="true">
  <arg value="${dist.path}" />
  <arg value="${build.version}" />
  <arg value="${build.version}" />
</exec>

它正在正常运行,因为它可以找到位于同一根文件夹下的
folder1/tools/VersionUpdater/VersionUpdater.exe
中的
visionupdater.exe

如何从另一个生成文件运行
versionUpdate.exe

它位于
folder1/subfolder/sub/build.xml

只有当
${tools.versionupdater.exe}
扩展到一个相对路径,该路径可以从
folder1
解析,但不能从
folder1/subfolder/sub
解析时,才会发生这种情况

解决方法取决于您调用
exec
的准确程度

  • 如果
    folder1/build.xml
    folder1/subfolder/sub/build.xml
    都包含相同的
    exec
    任务(重复),那么唯一可行的方法是确保
    tools.versionUpdate.exe
    属性的值是绝对路径,而不是相对路径
  • 如果
    folder1/subfolder/sub/build.xml
    调用
    folder1/build.xml
    中的目标,则确保使用的是
    ant
    任务,而不是
    antcall
    ,提供
    dir
    属性:

    <ant antfile="../../build.xml" dir="../../" target="...">
        ... parameters ...
    </ant>
    
    
    ... 参数。。。
    

  • ${tools.versionupdater.exe}
    的值是多少?另外,folder1/subfolder/sub/build.xml是否从folder1/build.xml启动?或者folder1/subfolder/sub/build.xml是自己启动的?