Как указать базовый dir, тогда мы запускаем ant как ant -f somedir/dir/build.xml

Как указать базовый dir, тогда мы запускаем ant как ant -f somedir/dir/build.xml. Ant устанавливает baseir относительно файла build.xml, если я укажу

<project basedir="." ..>

Я бы хотел, чтобы на основе указателя указывалось место, где выполняется ant.

Ответ 1

Используйте -D для переопределения свойства basedir:

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

Использование pwd - это только Linux, но вы всегда можете установить абсолютный путь к текущему каталогу, если вы находитесь на другой платформе.

Я не думаю, что есть способ сделать это внутри build.xml, за исключением повторного выполнения ant с задачей ant.

Ответ 2

Вы можете попробовать использовать задачу subant:

Предполагая, что у вас есть две разные папки

  • Текущая папка X:/your/launching/folder, где вы выполняете команду ant из

  • Папка, где ваш пункт назначения bulid.xml: Y:/any/folder/with/build.xml

Вы можете сделать следующее:

Создайте build.xml в X:/your/launching/folder со следующим контентом:

<target name="mytarget">
    <subant target="debug">
        <fileset dir="Y:/any/folder/with" includes="build.xml"/>
    </subant>
</target>

Затем вы можете выполнить ant mytarget из папки X:/your/launching/folder, чтобы начать создание Y:/any/folder/with/build.xml

Update:

Вы можете переопределить свойство basedir для создания субанта следующим образом:

    <subant target="debug">
        <property name="basedir" value="./any/dir/with/project"/>
        <fileset dir="Y:/any/folder/with" includes="build.xml"/>
    </subant>

Ответ 3

другое решение (если это имеет смысл в некоторых случаях) может быть переопределить basedir с помощью задачи var из расширения antcontrib, как описано здесь: fooobar.com/questions/539524/...

Ответ 4

Я обнаружил, что использование следующего решения является самым простым.

pushd somedir/dir && ant && popd

Хотя, кажется, легко - это работает.