导入时如何定制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>

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

时间: 2024-10-27 13:33:17

导入时如何定制spring-boot依赖项的版本的相关文章

【spring cloud】导入一个新的spring boot项目作为spring cloud的一个子模块微服务,怎么做/或者 每次导入一个新的spring boot项目,IDEA不识别子module,启动类无法启动/右下角没有蓝色图标

如题:导入一个新的spring boot项目作为spring cloud的一个子模块微服务,怎么做 或者说每次导入一个新的spring boot项目,IDEA不识别,启动类无法启动,怎么解决 下面一起来走一遍这个流程: 1.将一个spring boot服务导入spring cloud中作为一个子模块 如图:这里有一个现成的spring cloud微服务集群,[如何创建一个spring cloud微服务:https://www.cnblogs.com/sxdcgaq8080/p/9035724.h

spring boot 依赖环境和项目结构介绍

1.环境介绍 使用 Spring Boot 开发项目需要有两个基础环境和一个开发工具,这两个环境是指 Java 编译环境和构建工具环境,一个开发工具是指 IDE 开发工具. Spring Boot 2.0 要求 Java 8 作为最低版本,需要在本机安装 JDK 1.8 并进行环境变量配置,同时需要安装构建工具编译 Spring Boot 项目,最后准备个顺手的 IDE 开发工具即可. 1.1.构建工具 构建工具是一个把源代码生成可执行应用程序的自动化工具,Java 领域中主要有三大构建工具:A

Spring Boot . 4 -- 定制 Spring Boot 配置 【2】

除了第一篇中使用 覆写的方式进行 自动配置的更改外,还可以通过 Spring Boot 中提供的 application.properties 文件改变应用的运行时配置.这种配置的方式粒度是非常精细的. application.properties 在 Spring Boot 应用中,application.properties 文件在 resource/ 目录下,初始状态下,application.properties 是空白的.通过这个文件可以比较细粒度的控制Spring Boot 中的一些

spring boot 依赖排除

通过spring boot的起步依赖和自动配置,可以更加快速,便捷的开发spring应用程序. 起步依赖: 1.我们不需要指定版本号,起步依赖本身的版本是由正在使用的spring boot的版本来决定的,而起步依赖则会决定他们引入的传递依赖版本. 2.依赖排除:在Maven中可以使用<exclusions>元素来排除传递依赖 <dependency> <groupId>org.springframewok.boot</groupId> <artifac

maven 添加spring/springmvc依赖项

<spring.version>4.3.18.RELEASE</spring.version> <dependencies> <!--添加spring.springmvc依赖--> <!-- aop --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <

spring boot 依赖配置

虽然springboot号称是零配置 配置文件确实不需要,但是 依赖还是要有的 <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>1.4.0.RELEASE</version>    </parent

spring boot 1.5.6版本整合LCN5.0

最新在更新LCN,由4.0更新到了5.0,这里说说更新遇到的问题,官方在5.0.1版本开始兼容了springboot1.5版本,但是整合的时候还是需要注意一些问题. 1.maven的引包需要改变,本人使用的是最新的5.0.2版本 <-- 下面两个包的版本号最好与springboot版本一致,在txlcn-tc中,引入了这两个包,并且版本号为2.0.5,该操作用于覆盖2.0.5版本的包 --> <dependency> <groupId>org.springframewo

Gradle 如何打包 Spring Boot 如何不添加版本代码

在 Gradle 中如何在打包的 Jar 中不包含版本代码? 在 bootJar 中,使用下面的代码进行打包不包含版本代码. archiveFileName = "${archiveBaseName.get()}.${archiveExtension.get()}" 上面的代码将不会打包版本号码 完整的代码如下: bootJar { archiveFileName = "${archiveBaseName.get()}.${archiveExtension.get()}&qu

Spring Boot 2.2.2.RELEASE 版本中文参考文档

写在前面 在我初次接触MongoDB的时候,是为了做一个监控系统和日志分析系统.当时在用Java操作MongoDB数据里的数据的时候,都是在网上查找Demo示例然后完成的功能,相信大家也同样的体会,网上大都是这种一个入门的小Demo,很少有深入讲解的.功能调通后,自己琢磨效率方面的问题,便开始自己的瞎尝试之路,然后在产品启动阶段初始化多个MongoClient对象,搞了一个类似于连接池一类的池子,完成之后打心眼里觉得自己真是个小机灵鬼. 大概过了一年,为了系统地学习MongoDB的一些高级特性,