Что означает out.absolute.dir в ant?

Я вижу в файлах сборки разных проектов в Linux частое использование out.absolute.dir и мне очень интересно, что это значит. Я написал короткий файл сборки, который я упомянул в следующих строках

<project name="Test_Ant_APK" default="print">
 <property name="cal.out.dir" location="${out.absolute.dir}"/> 
 <target name="print">
   <echo>p=${cal.out.dir}</echo>
 </target>
</project>

И когда я запустил этот файл сборки из командной строки, я получил вот такой вывод

Buildfile: /home/jody/workspace/Test_Ant_APK/build.xml

print:

    [echo] p=/home/jody/workspace/Test_Ant_APK/${out.absolute.dir}
BUILD SUCCESSFUL

Total time: 0 seconds

Я немного запутался в выводе. Я думаю, что мы должны иметь p=/home/jody/workspace/Test_Ant_APK в качестве вывода. Почему мы имеем ${out.absolute.dir} в конце вывода, что это значит? Есть ли проблемы у этого файла сборки?

Куда именно указывает out.absolute.dir?

0
19.03.2016, 17:38
2 ответа

(это началось как комментарий, но стало слишком длинным, поэтому теперь это ответ)

  1. out.absolute.dir не имеет особого значения в Linux. Похоже, это переменная, используемая вашими скриптами сборки Ant. Если это часто встречается во многих несвязанных сценариях Ant, вероятно, это просто обычное соглашение, используемое многими пользователями / разработчиками Ant (но все же полностью произвольное и не имеющее особого значения само по себе за пределами Ant).

  2. $ {out.absolute.dir} - это просто способ гарантировать, что переменная будет использоваться оболочкой однозначно, если за ней сразу же следует другой текст - например, $ {out.absolute.dir} foo рассматривается как переменная $ out.absolute.dir , за которой следует буквальный текст foo , тогда как $ out.absolute.dirfoo рассматривается как совершенно другая переменная с именем $ out.absolute.dirfoo (которая, вероятно, не существует и вызовет ошибку в скрипте или, что еще хуже, вызовет скрипт делать что-то, чего он не должен, например, писать в / home / jody / workspace / Test_Ant_APK / , а не в подкаталог ... / Test_Ant_APK )

  3. / home / jody / workspace / Test_Ant_APK / $ {out.absolute.dir} просто добавляет значение переменной $ out.absolute.dir в / home / jody / workspace / Test_Ant_APK / .

  4. Чтобы точно определить, на что указывает эта переменная, вам нужно тщательно изучить сценарии сборки Ant, чтобы найти строку (строки), которые присваивают ей значение. Без копии сценария мы не сможем ответить на этот вопрос. Я бы посоветовал запустить grep 'out.absolute.dir. * =' для вашего ant и связанных скриптов сборки. $ out.absolute.dir может быть (и, вероятно, создается) из других переменных, поэтому вам также придется искать их значения.

Возможно, переменная автоматически определяется самим Ant. Я не знаю Муравья достаточно хорошо, чтобы сказать наверняка.

2
28.01.2020, 02:35

Попробую объяснить это на примере:

Допустим, ваш домашний каталог /home/jody

Допустим, у вас есть каталог под вашим домом под названием work

Когда вы входите в систему, вы автоматически оказываетесь в своем домашнем каталоге. Следовательно, когда вы выполняете:

cd work  #(*)

вы можете оказаться в этом каталоге work.

но предположим, что вы находитесь в каком-то другом каталоге, занимаетесь другими делами и вам нужно перейти в этот рабочий каталог. В этом случае вы выполняете

cd /home/jody/work   #(**)

.

(*) is a relative directory
(**) is an absolute directory

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

0
28.01.2020, 02:35

Теги

Похожие вопросы