Может кто-нибудь объяснить плющ.атрибут conf XML-зависимости?
Я не могу найти никакого подробного объяснения тега зависимости Плюща conf:
<dependency org="hibernate" name="hibernate" rev="3.1.3" conf="runtime, standalone -> runtime(*)"/>
видно, что conf? Я не могу найти никакого объяснения (что я могу понять) о правой стороне ->
символ. Пожалуйста, имейте в виду, что я не знаю первой вещи о Maven, поэтому, пожалуйста, объясните этот атрибут с учетом этого.
Да, я уже смотрел на это: http://ant.apache.org/ivy/history/latest-milestone/ivyfile/dependency.html
спасибо,
Дэн
4 ответа:
прежде всего,Ivy-это не Мэйвен;)
Maven2-это инструмент управления и понимания программного обеспечения, в то время как Ivy-это только инструмент управления зависимостями.Айви в значительной степени опирается на уникальную концепцию под названием конфигурация.
В Ivy конфигурация модуля-это способ использования или просмотра модуля.
Например, вы можете иметь тест и конфигурацию среды выполнения в вашем модуле. Но вы также можете иметь MySQL и конфигурация Oracle. Или спящий режим и конфигурация JDBC.в каждой конфигурации, вы можете заявить:
- какие артефакты (jar, war,...) требуются.
- ваши зависимости от других модулей и опишите, какая конфигурация зависимости вам нужна. Это называется сопоставлением конфигурации.
так conf атрибут делает именно это: описывает сопоставление конфигурации для a зависимость.
Элемент соотнесенные дочерний элемент это ваша " правая сторона->
символ " и представляет имя сопоставленной конфигурации зависимостей.'*'
подстановочный знак может использоваться для обозначения всех конфигураций этого модуля.
Maven2 на своей стороне имеет что-то под названием scope.
Можно объявить зависимость как часть области тестирования или области buildtime.
Тогда в зависимости от этого объема вы получите артефакт зависимостей (только один артефакт на модуль в maven2) со своими зависимостями в зависимости от их области действия. Области предопределены в maven2, и вы не можете изменить это.это значит :
здесь много ненужных зависимостей, загруженных для многих библиотек.
Например, Hibernate загружает кучу банок JBoss, а тег Display загружает все различные банки веб-фреймворка. Я обнаружил, что исключаю почти как многие зависимости, как я добавил.проблема в том, что hibernate может использоваться с несколькими реализациями кэша, несколькими реализациями пула соединений,... И это не может управляться с областями, где конфигурации Плюща предлагают элегантное решение такого рода проблемы.
Например, в Айви, предполагая, что hibernate имеет файл плюща, как этот, то вы можете объявить зависимость следующим образом:<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>
давайте!--10--> имеет две конфигурации, по умолчанию и тест.
Как практический вопрос, это будет очень необычно, чтобы хотеть оставитьconf
атрибут элемента зависимости.
Элементivy.xml
наmodA
может есть зависимость:<dependency org="theteam" name="modB" rev="1.0" conf="default->*" />
вы начинаете с default, а не с default и test.
в приведенном выше примере modA по умолчанию зависит от conf1, conf2 и conf3 modB.
Или вы можете сказать, что Moda по умолчанию зависит только от conf1 modB:<dependency org="theteam" name="modB" rev="1.0" conf="default->*conf1*" />
Спасибо VonC!
это помогло мне много дальше.
когда дело доходит до опций (конфигураций) tieTYT, вы можете найти их в ivy-[номер редакции].xml-файл в вашем репозитории Ivy в разделе: Имя организации --> имя модуля.
пример элемента конфигурации из версии JUnit 4.6, загруженной из http://www.springsource.com/repository/app/.
<configurations> <conf name="compile" visibility="public" description="Compile dependencies"/> <conf name="optional" visibility="public" extends="compile" description="Optional dependencies"/> <conf name="provided" visibility="public" description="Provided dependencies"/> <conf name="runtime" visibility="public" extends="compile" description="Runtime dependencies"/> </configurations>
в плюще моего проекта.XML-файл, у меня есть конфигурация компиляция-тест. В элементе dependencies у меня есть следующая зависимость:
<dependency org="org.junit" name="com.springsource.org.junit" rev="4.6.0" conf="compile-test->compile" />
Как вы можете видеть, моя конфигурация компиляции-теста зависит от конфигурации компиляции в плюще JUnit.XML-файл.
Я читал эти ответы и честно говоря, я не нахожу их очень полезными. Я думаю, что они могут быть улучшены, поэтому я записал, как я использую и понимаю конфигурации, показывая практический пример:
http://wrongnotes.blogspot.com/2014/02/simplest-explanation-of-ivy.html
к сожалению, вы должны немного понять maven и его зависимости, потому что Ivy использует репозитории Maven для удаления этих файлов jar, поэтому Ivy должен поймите Мэйвена, и он передаст вам этот доллар. Но, я думаю, что это просто не вдаваясь в слишком много деталей о Maven.