【问题标题】:Multiple spring dependencies of different versions不同版本的多个spring依赖
【发布时间】:2017-02-20 15:55:58
【问题描述】:

我正在使用 spring-boot 并希望在我的项目中包含两个不同版本的 spring-web,因为最新版本中的一个 API 已被弃用。为了继续使用它,我包含了两个不同版本的 spring-web 依赖项,但 eclipse 只识别它们。

我已经尝试从旧版本的 spring-web 中排除几乎所有内容,但这似乎也不起作用 - 请问有什么办法吗?

<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>3.0.2.RELEASE</version>
        <exclusions>
            <exclusion>
                <groupId>aopalliance</groupId>
                <artifactId>aopalliance</artifactId>
            </exclusion>
            <exclusion>
                <groupId>axis</groupId>
                <artifactId>axis</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.caucho</groupId>
                <artifactId>com.springsource.com.caucho</artifactId>
            </exclusion>
            <exclusion>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
            </exclusion>
            <exclusion>
                <groupId>javax.el</groupId>
                <artifactId>el-api</artifactId>
            </exclusion>
            <exclusion>
                <groupId>javax.faces</groupId>
                <artifactId>jsf-api</artifactId>
            </exclusion>
            <exclusion>
                <groupId>javax.xml</groupId>
                <artifactId>jaxrpc-api</artifactId>
            </exclusion>
            <exclusion>
                <groupId>javax.xml.ws</groupId>
                <artifactId>jaxws-api</artifactId>
            </exclusion>
            <exclusion>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-mapper-asl</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-oxm</artifactId>
            </exclusion>
            <exclusion>
                <groupId>javax.portlet</groupId>
                <artifactId>portlet-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

【问题讨论】:

  • 你不能依赖同一个依赖的多个版本。那没有意义。你怎么知道必须使用哪一个?

标签: maven spring-boot dependencies pom.xml


【解决方案1】:

由于名为“Dependency Mediation”的 Maven 概念,您将无法在项目中拥有两个不同版本的依赖项。查看Maven Introduction to the Dependency Mechanism 文档。

依赖中介 - 这决定了依赖的版本 当遇到工件的多个版本时将使用。 目前,Maven 2.0 仅支持使用“最近定义” 这意味着它将使用最接近的依赖版本 你的项目在依赖树中。您始终可以保证 通过在项目的 POM 中明确声明版本。请注意,如果 两个依赖版本在依赖树中的深度相同, 直到 Maven 2.0.8 还没有定义哪一个会赢,但是因为 Maven 2.0.9 重要的是声明中的顺序:第一个 声明获胜。

【讨论】:

    猜你喜欢
    • 2019-12-23
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 2017-09-13
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    相关资源
    最近更新 更多