Короткий Anwer заключается в использовании конфигурации плюща:
http://ant.apache.org/ivy/history/latest-milestone/tutorial/conf.html
конфигурация Ivy может быть использована для зависимостей группы для различных целей. Вам не нужны несколько плющ-файлов.
Пример
Вот моя решительность цель:
<target name="resolve" description="Download dependencies and setup classpaths">
<ivy:resolve/>
<ivy:report todir='${reports.dir}/ivy' graph='false' xml='false'/>
<ivy:cachepath pathid="compile.path" conf="compile"/>
<ivy:cachepath pathid="test.path" conf="test"/>
<ivy:cachepath pathid="build.path" conf="build"/>
</target>
, которые затем могут быть использованы непосредственно в моих различных задачах, требующих классы
<!-- Compiling code -->
<javac srcdir="${src.dir}"... classpathref="compile.path"/>
<!-- Testing code -->
<junit haltonfailure="yes" fork="true">
<classpath>
<path refid="test.path"/>
<pathelement path="${classes.dir}"/>
<pathelement path="${test.classes.dir}"/>
</classpath>
..
</junit>
<!-- 3rd party ANT tasks -->
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml" classpathref="build.path"/>
<taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml" classpathref="build.path"/>
..
Лично я использую только получить задание строить архивы. Здесь я снова использовать конфигурации для того, чтобы контролировать банки, которые я хочу:
<ivy:retrieve pattern="${build.dir}/libs/[artifact].[ext]" conf="runtime"/>
<war destfile="${war.file}" webxml="${resources.dir}/web.xml">
<fileset dir="${resources.dir}" excludes="web.xml"/>
<classes dir="${build.dir}/classes"/>
<lib dir="${build.dir}/libs"/>
</war>
IVY файл
<ivy-module version="2.0">
<info organisation="com.myspotontheweb" module="demo"/>
<configurations>
<conf name="compile" description="Required to compile application"/>
<conf name="runtime" description="Additional run-time dependencies" extends="compile"/>
<conf name="test" description="Required for test only" extends="runtime"/>
<conf name="build" description="ANT task dependencies"/>
</configurations>
<dependencies>
<!-- compile dependencies -->
<dependency org="org.slf4j" name="slf4j-api" rev="1.7.5" conf="compile->default"/>
<!-- runtime dependencies -->
<dependency org="org.slf4j" name="slf4j-log4j12" rev="1.7.5" conf="runtime->default"/>
<!-- test dependencies -->
<dependency org="junit" name="junit" rev="4.11" conf="test->default"/>
<!-- Build dependencies -->
<dependency org="org.codehaus.sonar-plugins" name="sonar-ant-task" rev="2.1" conf="build->default"/>
<dependency org="org.jacoco" name="org.jacoco.ant" rev="0.6.3.201306030806" conf="build->default"/>
</dependencies>
</ivy-module>
Нужные конфигурации объявлены в верхней части. Обратите внимание, как некоторые из них задают операции. Например, зависимости «компиляция» автоматически являются частью «времени выполнения» и «теста».
Во-вторых отображение конфигурации является критическим:
- myconf-> по умолчанию: Включает в зависимости переходных
- myconf-> мастер: Просто модуль баночка без зависимостей
Одобрено. Однако я знал о возможности использования разных конфигураций. Я специально запрашивал отдельные файлы IVY, поскольку мне нравится иметь те же «зависимости ANT-задачи» от нескольких проектов и иметь отдельные файлы IVY, что позволяет легко проверить (используя diff или даже символические ссылки), тогда как с вашим решением вы должны визуально проверить файлы, чтобы усвоить себя, что «зависимости от ANT-задач» действительно одинаковы (что важно для вас, конечно). Я считаю, что я достиг этого, но пока я не отправлю свой собственный ответ, я рад принять ваш ответ, поскольку это отличная запись. –
Кстати, мне не нравится использовать 'ivy: cachepath', поскольку он немного непрозрачен в отношении банок, которые действительно включаются. Я использую 'ivy: retrieve' даже для« зависимостей задачи ANT », так как мне нравится просматривать каталог в файловой системе и видеть все введенные банки.' Ivy: cachepath' не дает такой видимости, насколько это возможно Я в курсе. –
@MarcusJuniusBrutus Обратите внимание, что моя целевая задача «решить» использует задачу «отчет» плюща для создания подробного отчета о баночках для каждой конфигурации. –