Подтвердить что ты не робот

Как перебрать переменную пути класса в файл

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

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

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

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

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

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

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

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

Здесь я отключаюсь или даже удаленно закрываю?!?

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

4b9b3361

Ответ 1

Попробуйте следующее:

  <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>

Ответ 2

Прямо через:

<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}"