У меня есть процесс сборки Ant/Ivy, который я пытаюсь улучшить. Мне нужно разрешить зависимости, а затем извлечь их в определенную папку.Ant Цель развернуть архивы зависимости
Зависимости разрешают местоположение $(build_root)/dependency/downloads/[configuration]/[artifactId]/[version]/
, и это работает нормально. Я в конечном итоге с .pom
и .tar.bz2
файл в этом месте.
Что бы я хотел сделать, это немного больше контроля над извлечением .tar.bz2
зависимостей в каталог. Мы в основном пытаемся предотвратить конфликты для зависимостей lib
и inc
, контролируя, как и где происходит извлечение вывода .tar.bz2
.
В настоящее время мы делаем это путем разрешения всех зависимостей, а затем с целью развернуть архивы вслепую.
Наш шаг решительность выглядит следующим образом:
<target name="resolve">
<ivy:retrieve pattern="${dependency.dir}/[conf]/[artifact]/[artifact]-[revision].[ext]" conf="*" />
<condition property="archive.dir.present">
<resourceexists>
<file file="${dependency.dir}"/>
</resourceexists>
</condition>
<antcall if:set="archive.dir.present" target="expand-archives"/>
</target>
Обратите внимание на отдельный вызов цели «расширения-архив», который выглядит как:
<target name="expand-archives" description="Expand your Dependency Archives!">
<for param="file">
<path>
<fileset dir="${dependency.dir}" includes="**/*.tar.bz2"/>
</path>
<sequential>
<bunzip2 src="@{file}" dest="${dependency.dir}" />
</sequential>
</for>
<!-- Follow the bunzip2 by the tar command to extract the tarball -->
<for param="file">
<path>
<fileset dir="${dependency.dir}" includes="**/*.tar"/>
</path>
<sequential>
<echo message="Processing: @{file}"/>
<exec executable="tar" failonerror="true">
<arg value="-C"/>
<arg value="${dependency.dir}"/>
<arg value="-xvf"/>
<arg value="@{file}"/>
</exec>
</sequential>
</for>
</target>
То, что я хотел бы, чтобы это dest="${dependency.dir}
к нему добавлен артефактID зависимости.
Есть ли способ получить [artifact]
информацию извлечения и передачи в цель expand-archives
?
Спасибо
Я продолжал делать исследования и, кажется, что я должен использовать 'Триггеры' для решения моей проблемы. Я обновлю, как только я получу его работу. Дальнейшие предложения/советы приветствуются. –