如何指定基础目录然后我们像ant -f somedir/dir/build.xml.
一样运行ant
如果我指定
<project basedir="." ..>
我想让basedir指向执行Ant的地方。
答案 0 :(得分:17)
使用-D覆盖basedir属性:
ant -Dbasedir=`pwd` -f path/to/build.xml
pwd
的使用仅限于Linux,但如果您在另一个平台上,则可以随时将当前目录的绝对路径放在那里。
我认为没有办法在build.xml中执行此操作,缺少使用ant
任务重新执行ant。
答案 1 :(得分:9)
您可以尝试使用 subant 任务:
假设您有两个不同的文件夹
您当前的文件夹 X:/ your / launching / folder ,您正在执行 ant 命令
目标bulid.xml所在的文件夹: Y:/any/folder/with/build.xml
您可以执行以下操作:
使用下一个内容在 X:/ your / launching / folder 中创建 build.xml :
<target name="mytarget">
<subant target="debug">
<fileset dir="Y:/any/folder/with" includes="build.xml"/>
</subant>
</target>
然后您可以从 X:/ your / launching / folder 文件夹执行 ant mytarget ,开始构建 Y:/ any / folder / with / build .XML 强>
<强>更新强>
您可以为子服务构建覆盖 basedir 属性,如下所示:
<subant target="debug">
<property name="basedir" value="./any/dir/with/project"/>
<fileset dir="Y:/any/folder/with" includes="build.xml"/>
</subant>
答案 2 :(得分:1)
另一种解决方案(如果在某些情况下更有意义)可以是{strong>覆盖basedir
来自var
扩展程序的antcontrib
任务,如此处所述:https://stackoverflow.com/a/25786329/1915920
答案 3 :(得分:0)
我发现,使用以下解决方案是最简单的。
pushd somedir/dir && ant && popd
尽管似乎很容易-它可以工作。