Как отобразить переменную пути к классу в файл - PullRequest
21 голосов
/ 15 марта 2012

Я пытаюсь получить все содержимое моего основного пути к классам, чтобы записать в файл мой сборочный скрипт Ant:

<path id="main.class.path">
    <fileset dir="${lib.main.dir}">
        <include name="**/*.*"/>
    </fileset>
</path>

При наведении курсора на main.class.path Ant / Eclipse запускает всплывающую подсказку, в которой отображаются элементы на этом пути к классам:

C: \ Users \ MyUser \ верстак \ затмение \ рабочее пространство \ MYPROJ \ Lib \ главная \ муравей JUnit-1.6.5.jar

и т.д.. (Фактический список содержит около 30 JAR.)

Я хочу, чтобы этот список был записан в файл с именем deps.txt в моем каталоге dist/.

Я застрял, потому что не могу понять, как сделать main.class.path переменную Ant или как по крайней мере получить к ней доступ в задаче <echo>:

<echo file="${dist.dir}/deps.txt" message="${???}"/>

Я удаленная база или даже удаленно рядом?!?

А для тех из вас, кто вместо ответа на этот вопрос просто прокомментирует Зачем вам это нужно? , мой ответ прост: я просто хочу небольшой текстовый файл в моем JAR, который служит визуальным напоминанием (для моего будущего меня) о том, каковы его зависимости.

Ответы [ 2 ]

31 голосов
/ 15 марта 2012

Попробуйте это:

  <pathconvert property="expanded.main.class.path" refid="main.class.path"/>

  <target name="everything">
    <echo message="${expanded.main.class.path}"
          file="${dist.dir}/deps.txt"/>
  </target>
14 голосов
/ 16 марта 2012

Прямо через:

<echo file="${dist.dir}/deps.txt">${ant.refid:main.class.path}</echo>
<!-- or -->
<echo file="${dist.dir}/deps.txt">${toString:main.class.path}</echo>

$ {ant.refid: main.class.path} или $ {toString: main.class.path} - это свойство csv, которое содержит все элементы изваш путь с его вложенными наборами файлов ( resourcecollections в целом), разделенными символом ';'
см. Руководство по Ant Свойства и PropertyHelpers
Если вам нужен другой разделитель, вам нужениспользовать pathconvert с pathsep attribute, то есть для новой строки после каждого файла в вашем файле deps.txt используйте pathsep="${line.separator}"

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