Используйте публичное хранилище Maven с плющом
-
27-10-2019 - |
Вопрос
у меня есть ivy.xml
содержащий
<dependencies>
<dependency org="commons-lang" name="commons-lang" rev="2.4"/>
<dependency org="foo-bar" name="superwidgets" rev="1.5"/>
</dependencies>
Весь материал Superwidget размещен в репозитории Maven в http://example.com/m2/. Анкет Документация плюща Упоминает резолюры, но, похоже, он предполагает репозиторий плюща. Как я могу добавить один неофициальный репозиторий Maven в мои настройки плюща, которые будут использоваться только одним модулем? (Или поверните, что соответствует Maven's Maven <repository>
Tag in Ivy?) Ничего особенного, поэтому я ожидаю, что в моем Ivy.xml одностроитель.
Решение
Вам нужно добавить ivysettings.xml Файл со следующими репозиториями, перечисленными (резолюры в Айви говорить)
<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) от механизма поиска (настройки.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>
Другие советы
Я предпочитаю резолюры в цепях, которые включают в себя EBR Springsource и 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>
Хотя я не использую их напрямую, я предпочитаю Создать и контролировать мой собственный местный репозиторий плюща.
Вот тот, который пытается сохранить поведение Айви по умолчанию и просто добавить репозиторий, maven.tmatesoft.com
репо
<ivysettings>
<settings defaultResolver="default"/>
<!-- These "magic lines" are pulled from: https://ant.apache.org/ivy/history/latest-milestone/tutorial/defaultconf.html -->
<include url="${ivy.default.settings.dir}/ivysettings-public.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-local.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/>
<resolvers>
<!-- Custom Repos here -->
<ibiblio name="tmatesoft" m2compatible="true" root="https://maven.tmatesoft.com/content/repositories/releases/"/>
<!--<filesystem name="internal">-->
<!--<ivy pattern="${repository.dir}/[module]/ivy-[revision].xml"/>-->
<!--<artifact pattern="${repository.dir}/[module]/[artifact]-[revision].[ext]"/>-->
<!--</filesystem>-->
</resolvers>
<chain name="default" returnFirst="true" checkmodified="true" changingPattern=".*SNAPSHOT">
<!-- These two are magic lines from the default conf -->
<resolver ref="local"/>
<resolver ref="main" />
<!-- Custom Repos here -->
<resolver ref="tmatesoft" />
</chain>
<modules>
<module organisation="org.tmatesoft.hg4j" name=".*" resolver="tmatesoft"/>
</modules>
</ivysettings>