zoukankan      html  css  js  c++  java
  • 导入时如何定制spring-boot依赖项的版本

    spring-boot通过maven的依赖管理为我们写好了很多依赖项及其版本,我们可拿来使用。spring-boot文档介绍了两种使用方法,一是继承,二是导入。

    通过<parent>继承:

    <project>
      <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.1.9.RELEASE</version>
      </parent>
    </project>

    或者在<dependencyManagement>中导入:

      <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>1.1.9.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
          </dependency>
    </dependencies>
    </dependencyManagement>

    此外,在其文档里说到,继承时可简单地通过属性定制依赖项版本。比如,改为使用较新的spring-4.1.6.RELEASE版本:

    <properties>
        <spring.version>4.1.6.RELEASE<spring.version>
    </properties>

    不过,此法只对继承有效,导入无效。以下摘自其文档说明:

    This only works if your Maven project inherits (directly or indirectly) from spring-boot-dependencies. If you have added spring-boot-dependencies in your own dependencyManagement section with <scope>import</scope> you have to redefine the artifact yourself instead of overriding the property.

     这里说到,如要导入后修改依赖项版本就只能自己重新去定义了。

    需要注意的是,导入后再重新定义既繁琐又不安全。比如,spring-boot定义了8个tomcat依赖项,如果你导入后只重定义了部分tomcat依赖项及其版本,则将造成版本不一致的问题。

    那么导入时有没有既简单又安全的方法呢?我们可先继承后导入!

    1、先建一个过渡性工程,继承后定制依赖项的版本。

    <project>
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>1.1.9.RELEASE</version>
      </parent>
      <groupId>mycomp</groupId>
      <artifactId>myproject-spring-boot-bom</artifactId>
      <version>1.1.9</version>
    
      <packaging>pom</packaging>
    
      <properties>
        <spring.version>4.1.6.RELEASE</spring.version>
      </properties>
    </project>

    2、然后导入到自己的工程里。

    <project>
      <modelVersion>4.0.0</modelVersion>
      <groupId>mycomp</groupId>
      <artifactId>myproject</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    
      <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>mycomp</groupId>
            <artifactId>myproject-spring-boot-bom</artifactId>
            <version>1.1.9</version>
            <type>pom</type>
            <scope>import</scope>
          </dependency>
        </dependencies>
      </dependencyManagement>
    </project>

    这样,虽然多建了一个过渡性工程,但定制依赖项版本同继承时一样简单。

  • 相关阅读:
    栈大小和内存分部问题
    inline和宏之间的区别
    两个栈实现双端队列
    Hibernate学习笔记-Hibernate关系映射
    Hibernate学习笔记-Hibernate HQL查询
    Hibernate学习笔记--第一个Hibernate框架程序
    Hibernate学习笔记--Hibernate框架错误集合及解决
    Java学习笔记--对象克隆
    Scala学习笔记--文件IO
    Java学习笔记--Socket和ServerSocket
  • 原文地址:https://www.cnblogs.com/yang-wu/p/4593194.html
Copyright © 2011-2022 走看看