如何指定基本目录然后我们运行 ant 像ant -f somedir/dir/build.xml.
Ant 设置 basedir 相对于 build.xml,如果我指定
<project basedir="." ..>
我想让 basedir 指向执行 Ant 的地方。
使用 -D 覆盖 basedir 属性:
ant -Dbasedir=`pwd` -f path/to/build.xml
的使用pwd
仅适用于 Linux,但如果您在另一个平台上,您始终可以将当前目录的绝对路径放在那里。
我认为没有办法在 build.xml 中执行此操作,除非使用ant
任务重新执行 ant。
您可以尝试使用subant任务:
假设您有两个不同的文件夹
您正在执行ant命令的当前文件夹X:/your/launching/folder
目标 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
更新:
您可以像这样覆盖 subant 构建的basedir属性:
<subant target="debug">
<property name="basedir" value="./any/dir/with/project"/>
<fileset dir="Y:/any/folder/with" includes="build.xml"/>
</subant>
另一种解决方案(如果在某些情况下更有意义)可能是通过扩展中的任务覆盖basedir
var
,如下所述: https ://stackoverflow.com/a/25786329/1915920antcontrib
我发现,使用以下解决方案是最简单的。
pushd somedir/dir && ant && popd
虽然这似乎很容易 - 它有效。