使用常春藤的公共maven存储库

Ada*_*deg 36 maven-2 ivy artifactory

我有一个ivy.xml包含

<dependencies>
  <dependency org="commons-lang" name="commons-lang" rev="2.4"/>
  <dependency org="foo-bar" name="superwidgets" rev="1.5"/>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

整个superwidget内容托管在http://example.com/m2/的maven存储库中.常春藤文档提到了解析器,但它似乎假设一个常春藤存储库.如何将单个非官方maven存储库添加到我的常春藤设置中,仅供单个模块使用?(或换句话说,什么对应<repository>于常春藤中maven的标签?)没有什么花哨的,所以我希望在我的ivy.xml中有一个单行程.

Mar*_*nor 46

您需要添加一个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>
Run Code Online (Sandbox Code Playgroud)

在我看来,将依赖声明(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>
Run Code Online (Sandbox Code Playgroud)


小智 7

我更喜欢包含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>
Run Code Online (Sandbox Code Playgroud)

虽然我不直接使用它们,但我更喜欢创建和控制我自己的本地Ivy存储库.