【问题标题】:Spring 4.3.3 and Spring Data JPA 1.10.4 conflict Spring versionSpring 4.3.3 和 Spring Data JPA 1.10.4 冲突 Spring 版本
【发布时间】:2017-01-27 02:53:04
【问题描述】:

我们有 Spring 4.3.3 版和 Spring Data JPA 1.10.4 版 根据客户端技术架构师的说法,Spring Data JPA 1.10.4 版依赖于 Spring 4.2.8。 因此,我们的 Maven 依赖项中有 2 个版本的 Spring,声明的版本 4.3.3 和来自 Spring 数据的 Spring 版本 4.2.8。 因此,我们在 Spring Data JPA 中排除了 Spring 核心和其他 Spring 库,如下所示:

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>1.10.4.RELEASE</version>
    <exclusions>
        <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>spring-asm</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-tx</artifactId>
         </exclusion>
         <exclusion>
               <groupId>org.springframework</groupId>
               <artifactId>spring-core</artifactId>
         </exclusion>
         <exclusion>
               <groupId>org.springframework</groupId>
               <artifactId>spring-aop</artifactId>
         </exclusion>                           
    </exclusions>
</dependency>

这样,Spring版本会不会再有冲突了?

【问题讨论】:

    标签: spring spring-data


    【解决方案1】:

    为了避免 Spring 依赖项中的冲突,我强烈建议使用 Spring BoM(物料清单)功能

    https://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#overview-maven-bom

    可能会意外混合不同版本的 Spring JAR 使用 Maven 时。例如,您可能会发现第三方 库或另一个 Spring 项目引入了传递依赖项 到旧版本。如果您忘记明确声明直接 依赖自己,会出现各种意想不到的问题。

    为了克服这些问题,Maven 支持“bill of the 材料”(BOM)依赖。您可以导入 spring-framework-bom 在你的依赖管理部分,以确保所有弹簧 依赖项(直接和传递)处于同一版本。

    http://docs.spring.io/spring-data/jpa/docs/1.11.0.RELEASE/reference/html/#dependencies

    您的 Pom 将如下所示,根据需要更改版本:

    <dependencies>
    
        <!-- DECLARE ALL SPRING DEPENDENCIES WITHOUT VERSIONS 
             AS THE VERSIONS WILL BE RESOLVED FROM BoM
        -->
    
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-rest-webmvc</artifactId>
        </dependency>
    
        <!-- OTHER SPRING DEPENDENCIES AS REQUIRED -->
    </dependencies>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-framework-bom</artifactId>
                <type>pom</type>
                <version>4.2.6.RELEASE</version>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-bom</artifactId>
                <type>pom</type>
                <version>4.0.4.RELEASE</version>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-releasetrain</artifactId>
                <version>Hopper-SR3</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        <dependencies>
    </dependencyManagement>
    

    【讨论】:

      猜你喜欢
      • 2020-12-15
      • 2015-02-23
      • 2012-09-23
      • 2016-03-28
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 1970-01-01
      相关资源
      最近更新 更多