У меня возникли проблемы с получением зависимостей, которые я ожидаю от имени конфигурации. У меня есть разделяемые библиотеки я публикую в локальном хранилище, используя следующий файл плющ:Ivy разрешает зависимости в других конфигурациях
<?xml version="1.0"?>
<ivy-module version="2.0">
<info organisation="my.org" module="my-stuff" status="release"/>
<configurations>
<conf name="runtime"/>
<conf name="provided" extends="runtime"/>
<conf name="test" extends="provided"/>
</configurations>
<publications>
<artifact name="my-stuff" type="jar" ext="jar" conf="*"/>
<artifact name="my-stuff" type="source" ext="zip" conf="*"/>
</publications>
<dependencies>
<dependency org="javax.servlet" name="servlet-api" rev="2.4" conf="provided,test -> master"/>
<dependency org="org.apache.tomcat" name="tomcat-dbcp" rev="7.0.47" conf="provided,test -> master"/>
<dependency org="log4j" name="log4j" rev="1.2.17" conf="* -> master"/>
<dependency org="my.org" name="my-module" rev="1.2.3" conf="* -> default"/>
<dependency org="junit" name="junit" rev="4.5" conf="provided,test -> master"/>
<dependency org="org.apache.ant" name="ant" rev="1.8.4" conf="provided,test -> master"/>
</dependencies>
</ivy-module>
До сих пор, так хорошо. Я публикую банку my-stuff
, и если я попытаюсь получить его зависимости по конфигурации, я получаю то, что ожидаю, две зависимости в конфигурации времени выполнения и шесть из них в предоставленных и тестовых конфигурациях. Проблема начинается, когда я пытаюсь получить зависимости от чего-то, что зависит от my-stuff
. Я использую этот плющ файл:
<?xml version="1.0"?>
<ivy-module version="2.0">
<info organisation="my.org" module="test-my-stuff" status="release"/>
<configurations>
<conf name="runtime"/>
<conf name="provided" extends="runtime"/>
<conf name="test" extends="provided"/>
</configurations>
<dependencies>
<dependency org="my.org" name="my-stuff" rev="1.1"/>
</dependencies>
</ivy-module>
Теперь, если я пытаюсь восстановить конфигурацию runtime
, вместо того, чтобы получать my-stuff
банку, log4j
и my-module
, я получаю двенадцать банок, в том числе и activation.jar
mail.jar
, что я не получаю когда я использую первый файл плюща для извлечения. Почему мой второй файл плюща вытягивает все в конфигурацию времени выполнения? Что я делаю неправильно?
Если, с другой стороны, я добавляю сопоставление конфигурации для зависимостей во втором файле, например runtime->runtime;provided->provided;test->test
, разрешение не будет выполнено, утверждая, что он не может найти my-stuff
.
Ok, спасибо. Это исправило мою проблему. –
Что-то еще, что было частью моей проблемы - если вы не обновляете свою версию публикации, кеш не обновляется. Поэтому необходимо было очистить кеш. –
@ DavidStanley Ah ... Ну, это цель кеша .... Я избегаю этой проблемы, используя очень полезную задачу ivv buildnumber, чтобы генерировать уникальный номер выпуска каждый раз, когда я публикую артефакт. См .: http://ant.apache.org/ivy/history/latest-milestone/use/buildnumber.html. –