【问题标题】:How to specify base dir then we run ant like ant -f somedir/dir/build.xml如何指定基本目录然后我们像 ant -f somedir/dir/build.xml 一样运行 ant
【发布时间】:2019-07-22 15:37:41
【问题描述】:

如何指定基本目录然后我们像ant -f somedir/dir/build.xml.一样运行ant Ant 设置 basedir 相对于 build.xml,如果我指定

<project basedir="." ..>

我想让 basedir 指向执行 Ant 的位置。

【问题讨论】:

  • 你能把build.xml复制到另一个目录吗?
  • 是的,但我不想复制这个文件
  • 链接还是符号链接呢?
  • 我不想在脚本中编写额外的命令。我想修改 build.xml
  • 那时我完全不知道。对不起:)

标签: java ant


【解决方案1】:

使用 -D 覆盖 basedir 属性:

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

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

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

【讨论】:

    【解决方案2】:

    你可以尝试使用subant任务:

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

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

    2. 您的目标 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>
    

    【讨论】:

    • 好答案。这正是我想要的。谢谢我们
    【解决方案3】:

    另一种解决方案(如果在某些情况下更有意义)可能是通过var 任务从antcontrib 扩展中覆盖basedir,如下所述:https://stackoverflow.com/a/25786329/1915920 p>

    【讨论】:

      【解决方案4】:

      我发现,使用以下解决方案是最简单的。

      pushd somedir/dir && ant && popd
      

      虽然看起来很简单 - 它确实有效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多