Прежде всего, Ivy is not Maven;)
Maven2 является инструментом управления программным проектом и понимание, в то время как Айви только инструмент управления зависимостями.
Айви тяжело полагается на уникальную концепцию конфигурация.
В плющовой конфигурации модуля используется способ или для просмотра модуля.
Например, вы можете иметь конфигурацию тестирования и времени выполнения в вашем модуле. Но вы также можете иметь конфигурацию mysql и oracle. Или спящий режим и конфигурация jdbc.
В каждой конфигурации вы можете объявить:
- , что артефакты (баночка, война, ...) обязательны для заполнения.
- ваши зависимости от других модулей и укажите, какая конфигурация зависит от вас. Это называется конфигурационным отображением.
Таким образом, атрибут conf выполняет именно это: Описывает сопоставление конфигурации для зависимости.
mapped child element - это ваша «правая сторона символа ->
» и представляет собой имя отображаемой конфигурации зависимостей. '*'
wildcard можно использовать для обозначения всех конфигураций этого модуля.
Maven2 на его стороне есть что-то назвал сферу.
Вы можете объявить зависимость как часть области проверки или область времени сборки.
Тогда в зависимости от этой области вы получите артефакт зависимости (только один артефакт для каждого модуля в maven2) с его зависимостями в зависимости от их объема. Области предопределены в maven2, и вы не можете это изменить.
Это означает, что:
Есть целый много ненужных зависимостей, загруженные для многих библиотек.
Например, Hibernate загружает кучу JBoss JAR, а Дисплей Tag загружает все различные JAR-интерфейсы в веб-среде. Я обнаружил, что исключаю почти столько же зависимостей, сколько добавил.
Проблема заключается в том, что спящий режим может использоваться с несколькими реализаций кэша, несколько реализаций пула соединений, ... И это не может управляться с областями, Wheres конфигурация Ivy предлагает элегантное решение проблемы такого рода.
Например, плющ, предполагая, спящий режим имеет файл плющ, как этот, то вы можете объявить зависимость так:
<dependency org="hibernate" name="hibernate" rev="2.1.8" conf="default->proxool,oscache"/>
получить спящий режим с его proxool и OSCache реализации, и как это:
<dependency org="hibernate" name="hibernate" rev="2.1.8" conf="default->dbcp,swarmcache"/>
, чтобы получить спящий режим с dbcp и swarmcache.
Отображая ваш по умолчанию master
конфигурацию «proxool,oscache
» или «dbcp,swarmcache
», вы указываете, что вам нужно точно из модуля «Hibernate».
Вы можете найти эту «proxool, ...» аргументы путем перечисления конфигурации плюща, определенную для каждого модуль ассоциированного с библиотекой. Например:
<ivy-module version="2.0">
<info organisation="ssn-src" module="pc"/>
<configurations defaultconfmapping="default->default">
<conf name="default" />
<conf name="provided" description="they are provided by the env." />
<conf name="compile" extends="default,provided" />
<conf name="war" extends="default"/>
</configurations>
<dependencies>
Example:
давайте предположим, что modA
имеет две конфигурации по умолчанию и тест.
Как практично, будет очень необычно хотеть оставить атрибут conf
элемента зависимостей.
ivy.xml
для modA
может иметь зависимость:
<dependency org="theteam" name="modB" rev="1.0" conf="default->*" />
Вы, начиная от дефолта, а не как от дефолта и испытания.
В приведенном выше примере modA по умолчанию зависит от conf1, conf2 и conf3 от modB.
Или вы можете сказать, что по умолчанию Moda зависит только от conf1 MODB в:
<dependency org="theteam" name="modB" rev="1.0" conf="default->*conf1*" />
Добавлено несколько деталей, по запросу – VonC