工件/模块上的“com.springsource”前缀导致冲突

时间:2014-06-18 20:31:57

标签: spring maven ivy

我依赖于我的项目:

<dependency org="org.springframework"
            name="org.springframework.web.servlet"
            rev="3.1.2.RELEASE" />

它想要拉这样的东西:

org.apache.commons#com.springsource.org.apache.commons.logging;1.1.1

会导致使用较新版本的commons-logging的其他库出现问题。所以我通过这样排除它来解决它:

<exclude org="org.apache.commons"
         module="com.springsource.org.apache.commons.logging" />

但不得不这样做会破坏Ivy内置的冲突管理的目的。有没有更好的方法来处理这个问题,还是我必须手动追踪所有潜在的冲突?

免责声明:我对常春藤和依赖管理都很陌生,所以我不知道这个概念是否也延伸到了Maven世界。如果没有,我为错误标记道歉。

1 个答案:

答案 0 :(得分:2)

我假设您使用ivysettings.xml文件中的EBR repositories。 您将获得这些com.springsource依赖项,因为EBR中的所有库都是有效的OSGi包,而SpringSource通过在包名称前加com.springsource前缀来修改包中的普通jar。

另外,我假设您的项目没有使用OSGi容器,并且您实际上并不需要在项目中使用OSGi包。要回到解析普通jar而不是OSGi包,你不需要使用EBR存储库。

ivysettings.xml评论中指向EBR存储库的解析器,例如:

<!-- <resolvers>
    <chain name="chained">
        <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>
    </chain>
</resolvers> -->

并用ibiblio解析器替换它们:

<settings defaultResolver="central"/>
<resolvers>
    <ibiblio name="central" m2compatible="true"/>
</resolvers>

此外,您需要将最初从EBR存储库获取的任何依赖项更改为通常的Maven中央存储库所具有的格式。例如,您对org.springframework.web.servlet的依赖关系需要在ivy.xml中更改为:

<dependency org="org.springframework"
            name="spring-web"
            rev="3.1.2.RELEASE" />

通过上述更改,Ivy还将解析Maven central的依赖关系。