Ant: атрибут набора файлов "dir" с расширенным полным путем во время выполнения - PullRequest
2 голосов
/ 17 сентября 2010

Допустим, у меня есть файловая система, которая выглядит примерно так:

  • C: \ stuff \ build.xml
  • C: \ stuff \ myfolder \ library1.jar
  • C: \ stuff \ myfolder \ library2.jar

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

<path id="some.id">
    <fileset dir="myfolder">
        <include name="**/*.jar"/>
    </fileset>
</path>

Обычно это нормально работает.Однако я вызываю свою собственную пользовательскую задачу Ant, которая унаследует любые ссылки (включая путь "some.id"), и эта пользовательская задача Ant вызовет build.xml, который находится в другом basedir.Следовательно, атрибут «dir» в наборе файлов больше недействителен.

Есть ли способ определить «dir» так, чтобы он оставался действительным независимо от того, где находится второй build.xml?

Я, по сути, хочу сделать что-то вроде этого:

<fileset dir="${expand.current.directory}/myfolder">

Поэтому, когда я вызову второй build.xml, он поймет, что атрибут "dir" - это расположение:

<fileset dir="c:\stuff\myfolder">

Редактировать: Кроме того, я хочу решение, которое позволило бы мне копировать проект "вещи" с одного компьютера на другой, не требуя изменения в сборке.Например, если проект «stuff» находится на диске C: и я копирую проект на диск D: на другом компьютере, я хочу, чтобы сборка продолжала работать без необходимости заходить в сборку и менять буквуС на букву Д.

Ответы [ 2 ]

3 голосов
/ 17 сентября 2010

Я думаю, что вы после свойства ${user.dir} - текущего рабочего каталога.

Все java System.properties доступны как свойства муравья.

1 голос
/ 17 сентября 2010

Вариант 1: Вы можете определить свойство Ant.

В начале файла вы можете определить это свойство:

<property name="myproject.root.path" location="C:/stuff/"/>

А затем используйте его:

<fileset dir="${myproject.root.path}/myfolder">

Вариант 2: Вы также можете определить его во внешнем файле build.properties, расположенном в той же папке, где находится файл build.xml.

Файл C: \ stuff \ build.properties

myproject.root.path=C:/stuff/

И, чтобы использовать этот файл, вы должны добавить эту строку в файл Ant XML (рекомендуется перед определением задач):

<property file="build.properties"/>

Как только вы включите этот файл, вы можете использовать свойства проекта, так же, как в варианте 1:

<fileset dir="${myproject.root.path}/myfolder">

Вы можете добавить более одного файла свойств.

Обратите внимание, что пути определяются с использованием косой черты, а не обратной косой черты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...