如何指定base dir然后我们像ant -f somedir / dir / build.xml一样运行ant

时间:2013-04-01 14:59:17

标签: java ant

如何指定基础目录然后我们像ant -f somedir/dir/build.xml.一样运行ant 如果我指定

,Ant将相对于build.xml设置为basedir
<project basedir="." ..>

我想让basedir指向执行Ant的地方。

4 个答案:

答案 0 :(得分:17)

使用-D覆盖basedir属性:

ant -Dbasedir=`pwd` -f path/to/build.xml

pwd的使用仅限于Linux,但如果您在另一个平台上,则可以随时将当前目录的绝对路径放在那里。

我认为没有办法在build.xml中执行此操作,缺少使用ant任务重新执行ant。

答案 1 :(得分:9)

您可以尝试使用 subant 任务:

假设您有两个不同的文件夹

  1. 您当前的文件夹 X:/ your / launching / folder ,您正在执行 ant 命令

  2. 目标bulid.xml所在的文件夹: Y:/any/folder/with/build.xml

  3. 您可以执行以下操作:

    使用下一个内容在 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

尽管似乎很容易-它可以工作。