定制Spring Boot的依赖库版本(Maven版)

在SpringBoot的Maven项目的pom.xml中,大多数情况下可以省略依赖库的版本指定。这是因为在后面的spring-boot-dependencies中已经定义了SpringBoot支持的各种库的版本,并且可以通过引用来查看。

这里之前一直在关注的是,比如在使用SpringBoot时,如果Tomcat方面发布了一个紧急的安全修复版本,如何单独更新Tomcat的版本呢?本文将通过实际的示例代码来验证这一点。

以下是示例代码。

https://github.com/msakamoto-sf/springboot-lib-version-change-demo

SpringBoot 2.1.1 を使用したMavenプロジェクトです。

示例代码的说明

这是一个由STS4生成的SpringBoot 2.1.1的简单Maven项目。容器使用默认的Tomcat,并添加了h2database。

仓库的pom.xml文件已经定制了版本。在标签内,覆盖了spring-boot-dependencies中定义的tomcat和h2的版本,如下所示。

    <properties>
        <java.version>1.8</java.version>
        <tomcat.version>9.0.14</tomcat.version>
        <h2.version>1.4.196</h2.version>
    </properties>

我们首先将其恢复为当时生成的状态,并尝试构建和运行。

    <properties>
        <java.version>1.8</java.version>
    </properties>

请使用 mvnw package 命令进行构建,然后使用 java -jar(jar文件)进行执行,并访问 http://localhost:18088/。您将看到显示以下类似版本信息的页面(此为2019-01-02前后版本的信息)。

servletContext.getServerInfo() -> Apache Tomcat/9.0.13
SELECT H2VERSION() -> 1.4.197

这是预先内嵌在spring-boot-dependencies中的版本。我们将尝试进行自定义。由于Tomcat已发布9.0.14版本,我们将更改为该版本,而对于h2database,我们将降低一个版本至1.4.196。

→ 当您进行更改后重新构建并运行时,变更结果应该会体现在存储库的pom.xml文件中,并确保确实显示出已更改的版本。

关于spring-boot-dependencies

STS4生成的pom.xml中,将spring-boot-starter-parent:2.1.1.RELEASE设置为parent。查看这个pom.xml可以发现,spring-boot-dependencies:2.1.1.RELEASE被指定为更高的parent。

查看spring-boot-dependencies的pom.xml可以发现,中注册了各种库的版本。

<?xml version="1.0" encoding="utf-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.1.1.RELEASE</version>
    <packaging>pom</packaging>
    <name>Spring Boot Dependencies</name>
    <description>Spring Boot Dependencies</description>
    <url>https://projects.spring.io/spring-boot/#</url>
<!-- ... -->
    <properties>
<!-- ... -->
        <h2.version>1.4.197</h2.version>
<!-- ... -->
        <tomcat.version>9.0.13</tomcat.version>

这些定义在spring-boot-starter系列的pom.xml中,通过对个别库的依赖关系中的进行引用。
因此,应用程序的pom.xml中不需要指定。另外,spring-boot-dependencies定义了被确认为SpringBoot正常运作的版本号,因此可以保证一致性。无需担心”哦,这个版本好吗?”。

如果您想使用不同版本,只需在应用程序的pom.xml文件中覆盖相同的属性即可。请参阅官方参考文档以获取有关解释的更多信息。

    • 13.1 Dependency Management

https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/reference/htmlsingle/#using-boot-dependency-management

总结

    • SpringBoot の依存ライブラリのバージョンをカスタマイズするには、 spring-boot-dependencies 側で定義されているバージョンのプロパティをアプリ側のpom.xmlで上書きすればOK.

 

    ↑実際にサンプルコードで確認してみた。
广告
将在 10 秒后关闭
bannerAds