Ответ 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>
Я пытаюсь получить все содержимое моего основного пути к классам, чтобы записать его в файл по 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, который служит визуальным напоминание (для моего будущего меня) о том, каковы его зависимости.
Попробуйте следующее:
<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>
Прямо через:
<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}"