2

我刚刚发现一件令人生畏的事情。spring 依赖坐标​​有两个版本。

项目依赖于 spring mvc 和 spring flow。有两组并行的依赖项。

Spring MVC 具有以下方案的依赖项:org.springframework:spring-asm.

Spring Flow 具有以下方案的依赖项:org.springfrmaework:org.springframework.asm.

为什么有两组不同的相同依赖项?如何克服?

<dependency>
        <groupId>org.springframework.webflow</groupId>
        <artifactId>org.springframework.webflow</artifactId>
        <version>2.3.1.RELEASE</version>
    </dependency>


<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>3.0.4.RELEASE</version>
    </dependency>
4

1 回答 1

3

这基本上是您正在使用的工件的问题:

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.webflow</artifactId>
    <version>2.3.1.RELEASE</version>
</dependency>

是来自SpringSource Enterprise Bundle Repository的工件,并且这些工件符合 OSGi。我引用:

欢迎来到 SpringSource Bundle 存储库。在这里,您会发现开发 Spring 应用程序时常用的数百个开源企业库的 OSGi 就绪版本。

另一方面,你有:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>3.0.4.RELEASE</version>
</dependency>

是来自maven 存储库的标准工件。

org.springframework.asm

是用于 OSGi 的 asm 工件的修补版本。

解决此问题的最佳解决方案是仅使用 SEBR 存储库工件。

我推荐这个,因为有一次我对来自 maven 中央仓库的 jars 有问题(它们已损坏),所以我尝试将 SEBR 用于任何 spring 依赖项。但我从文档中引用:

如果 OSGi 对您来说不重要,那么任何一个地方都可以,尽管它们之间存在一些优点和缺点。一般来说,为您的项目选择一个地方或另一个地方;不要混合它们。这一点尤其重要,因为 EBR 工件必须使用与 Maven Central 工件不同的命名约定。

于 2012-11-11T18:43:01.563 回答