Используйте общедоступный репозиторий maven с ivy

У меня есть 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 в настройки ivy, который будет использоваться только одним модулем? (Или, другими словами, что соответствует тегу maven <repository> в ivy?) Ничего особенного, поэтому я ожидаю однострочного кода в моем ivy.xml.


person Adam Schmideg    schedule 29.01.2011    source источник


Ответы (3)


Вам необходимо добавить файл ivysettings.xml со следующими перечисленными репозиториями (преобразователи на языке ivy)

<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>
person Mark O'Connor    schedule 29.01.2011
comment
Я новичок в этом, пробовал с <ibiblio name="tmatesoft-releases" m2compatible="true" root="http://maven.tmatesoft.com/content/repositories/releases/"/> и получил unknown resolver main и unknown resolver public - person Jonathan; 18.10.2018

Я предпочитаю связанные распознаватели, которые также включают 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>

Хотя я не использую их напрямую, я предпочитаю создавать собственный локальный репозиторий Ivy и управлять им.

person István    schedule 21.02.2011

Вот тот, который пытается сохранить поведение Ivy по умолчанию и просто добавить репозиторий, репозиторий 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>
person Jonathan    schedule 18.10.2018