Использовать публичный репозиторий maven с плющом
У меня есть ivy.xml
содержащий
<dependencies>
<dependency org="commons-lang" name="commons-lang" rev="2.4"/>
<dependency org="foo-bar" name="superwidgets" rev="1.5"/>
</dependencies>
Вся информация о супервидитах размещается в хранилище maven в http://example.com/m2/. Документация ivy упоминает преобразователи, но, похоже, она использует репозиторий плюща. Как я могу добавить один неофициальный репозиторий maven к моим настройкам плюща, которые будут использоваться только одним модулем? (Или по-другому, что соответствует тегу maven <repository>
в плющом?) Ничего необычного, поэтому я ожидал бы однострочный слой в моем ivy.xml.
Ответы
Ответ 1
Вам нужно добавить файл ivysettings.xml с перечисленными ниже репозиториями (resolvers в плющом )
<ivysettings>
<settings defaultResolver="chain"/>
<resolvers>
<chain name="chain">
<ibiblio name="central" m2compatible="true"/>
<ibiblio name="example" m2compatible="true" root="http://example.com/m2/"/>
</chain>
</resolvers>
</ivysettings>
По-моему, имеет смысл отделять декларацию зависимости (ivy.xml) от механизма извлечения (settings.xml). Это не нужно в Maven, потому что оно поддерживает только один тип репозитория.
Если вы хотите по-настоящему представить себе, что вы можете контролировать, какой репозиторий обслуживает определенный модуль:
<ivysettings>
<settings defaultResolver="central"/>
<resolvers>
<ibiblio name="central" m2compatible="true"/>
<ibiblio name="example" m2compatible="true" root="http://example.com/m2/"/>
</resolvers>
<modules>
<module organisation="foo-bar" name="superwidgets" resolver="example"/>
</modules>
</ivysettings>
Ответ 2
Я предпочитаю цепные резольверы, которые включают SpringSource EBR и Maven Central, например:
<ivysettings>
<settings defaultResolver="spring-chain" />
<resolvers>
<chain name="spring-chain">
<url name="com.springsource.repository.bundles.release">
<ivy pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
<artifact pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>
<url name="com.springsource.repository.bundles.external">
<ivy pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
<artifact pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>
<ibiblio name="ibiblio" m2compatible="true"/>
</chain>
</resolvers>
</ivysettings>
Хотя я не использую их напрямую, я предпочитаю создавать и управлять моим собственным локальным репозиторием Ivy.