Как указать базовый 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
Хотя, кажется, легко - это работает.