不同版本的多个spring依赖项

时间:2017-02-20 07:49:41

标签: maven spring-boot dependencies pom.xml

我正在使用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>

1 个答案:

答案 0 :(得分:0)

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

  

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