Spring Boot 3.x 构建系统&Starters

2023-11-04

系列文章目录

系列文章:Spring Boot 3.x 系列教程


前言

Spring Boot 建议选择一个支持依赖项管理并能够使用发布到“Maven Central”存储库的构件的构建系统。一般可以选择MavenGradle。让Spring Boot与其他构建系统(例如Ant)一起工作是可能的,但它们并没有得到很好的支持。本文只介绍常用的Maven

一、依赖管理

Spring Boot的每个版本都提供了一个它所支持的依赖项列表。在实践中,你不需要在构建配置中为这些依赖项提供一个版本,因为Spring Boot会为你管理它。当你升级Spring Boot本身时,这些依赖项也会以一致的方式升级。

二、Maven

maven项目引入Spring Boot框架有两种方式:

1. 继承spring-boot-starter-parent

<!-- Inherit defaults from Spring Boot -->
<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>3.0.0-M2</version>
</parent>

这种方式只需要指定Spring Boot parent版本号,如果需要引入其它的starter无需指定版本。

使用这种方式,还可以通过覆盖自己项目中的属性来覆盖各个依赖项。例如,要使用不同版本的SLF4J库,你需要将以下内容添加到pom.xml中:

<properties>
    <slf4j.version>1.7.30</slf4j.version>
</properties>

2. dependencyManagement

可能有一些原因让你不从spring-boot-starter-parent POM继承。你可能需要使用自己的公司标准父组件,或者你可能更喜欢显式声明所有Maven配置。

如果你不想使用spring-boot-starter-parent,你仍然可以通过使用一个import作用域的依赖项来保持依赖管理,如下所示:

<dependencyManagement>
    <dependencies>
        <dependency>
            <!-- Import dependency management from Spring Boot -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>3.0.0-M2</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

正如上述例子所示,如果需要覆盖SLF4J的版本,此方式也可以实现:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.30</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>3.0.0-M2</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

三、Spring Boot Maven Plugin

Spring Boot Maven Plugin在Apache Maven中提供了Spring Boot支持。它允许你打包可执行jarwar文件,运行Spring Boot应用程序,生成构建信息,并在运行集成测试之前启动Spring Boot应用程序。

要使用Spring Boot Maven Plugin,需要在pom.xmlplugins部分包含适当的XML,如下所示:

<project>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>getting-started</artifactId>
    <!-- ... -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

该插件提供了许多用户属性,已spring-boot开头,让你可以从命令行自定义配置。
在这里插入图片描述

$ mvn spring-boot:run -Dspring-boot.run.profiles=dev,local

具体参考Spring Boot Maven Plugin Documentation

四、Starters

Starter是在你应用中方便描述依赖关系的描述符。你可以获得所需的所有Spring和相关技术的一站式商店,而不必遍历复制粘贴大量依赖管理。例如,如果你想开始使用Spring和JPA进行数据库访问,只需要在你的项目中包含spring -boot-starter-data- jpa依赖项。

所有的官方Starter都遵循类似的命名模式;spring-boot-starter -*,其中*是特定类型的应用程序。当你需要找到初学者时,此命名结构将提供帮助。如果你需要自定义Starter,一般命名为thirdpartyproject-spring-boot-starter

以下应用Starter是由Spring Boot在org.springframework.boot组下提供的:

Name Description
spring-boot-starter auto-configuration , logging and YAML
spring-boot-starter-amqp Spring AMQP and Rabbit MQ
spring-boot-starter-aop Spring AOP and AspectJ
spring-boot-starter-artemis JMS for Apache Artemis
spring-boot-starter-batch Spring Batch
spring-boot-starter-cache Spring Framework’s caching support
spring-boot-starter-data-cassandra Spring Data Cassandra
spring-boot-starter-data-cassandra-reactive Spring Data Cassandra Reactive
spring-boot-starter-data-couchbase Spring Data Couchbase
spring-boot-starter-data-couchbase-reactive Spring Data Couchbase
spring-boot-starter-data-elasticsearch Spring Data Elasticsearch
spring-boot-starter-data-jdbc Spring Data JDBC
spring-boot-starter-data-jpa Spring Data JPA with Hibernate
spring-boot-starter-data-ldap Spring Data LDAP
spring-boot-starter-data-mongodb Spring Data MongoDB
spring-boot-starter-data-mongodb-reactive Spring Data MongoDB Reactive
spring-boot-starter-data-neo4j Spring Data Neo4j
spring-boot-starter-data-r2dbc Spring Data R2DBC
spring-boot-starter-data-redis Spring Data Redis and the Lettuce client
spring-boot-starter-data-redis-reactive Spring Data Redis reactive and the Lettuce client
spring-boot-starter-data-rest Spring Data REST
spring-boot-starter-freemarker FreeMarker
spring-boot-starter-groovy-templates Groovy Templates
spring-boot-starter-hateoas Spring HATEOAS
spring-boot-starter-integration Spring Integration
spring-boot-starter-jdbc JDBC with the HikariCP connection pool
spring-boot-starter-jooq jOOQ
spring-boot-starter-json json
spring-boot-starter-mail Spring Framework’s email
spring-boot-starter-mustache Mustache views
spring-boot-starter-oauth2-client Spring Security’s OAuth2/OpenID Connect client
spring-boot-starter-oauth2-resource-server Security’s OAuth2 resource server
spring-boot-starter-quartz Quartz
spring-boot-starter-rsocket RSocket clients and servers
spring-boot-starter-security Spring Security
spring-boot-starter-test JUnit Jupiter, Hamcrest and Mockito
spring-boot-starter-thymeleaf Thymeleaf views
spring-boot-starter-validation Hibernate Validator
spring-boot-starter-web Spring MVC Tomcat
spring-boot-starter-web-services Spring Web Services
spring-boot-starter-webflux Spring Framework’s Reactive Web
spring-boot-starter-websocket Spring Framework’s WebSocket
spring-boot-starter-actuator 监控和管理应用程序
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot 3.x 构建系统&Starters 的相关文章

  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • org.apache.hadoop.security.AccessControlException:客户端无法通过以下方式进行身份验证:[TOKEN,KERBEROS] 问题

    我正在使用 java 客户端通过 Kerberos 身份验证安全访问 HDFS 我尝试打字klist在服务器上 它显示已经存在的有效票证 我收到的异常是客户端无法通过以下方式进行身份验证 TOKEN KERBEROS 帮助将不胜感激 这是一
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • 无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]-MySQL

    我是 Hibernate 的新手 我目前正在使用 Spring boot 框架并尝试通过 hibernate 创建数据库表 我知道以前也问过同样的问题 但我似乎无法根据我的环境找出如何修复错误 休眠配置文件
  • 将 MOXy 设置为 JAXB 提供程序,而在同一包中没有属性文件

    我正在尝试使用 MOXy 作为我的 JAXB 提供程序 以便将内容编组 解组到 XML JSON 中 我创建了 jaxb properties 文件 内容如下 javax xml bind context factory org eclip
  • Eclipse Maven Spring 项目 - 错误

    I need help with an error which make me crazy I started to study Java EE and I am going through tutorial on youtube Ever
  • Hibernate 的 PersistentSet 不使用 hashCode/equals 的自定义实现

    所以我有一本实体书 public class Book private String id private String name private String description private Image coverImage pr
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • Eclipse 启动时崩溃;退出代码=13

    I am trying to work with Eclipse Helios on my x64 machine Im pretty sure now that this problem could occur with any ecli
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 在java中为组合框分配键

    我想添加一个JComboBox在 Swing 中这很简单 但我想为组合中的每个项目分配值 我有以下代码 JComboBox jc1 new JComboBox jc1 addItem a jc1 addItem b jc1 addItem

随机推荐

  • Zabbix安装时出现缺少PHP模块,解决过程

    我在安装时PHP缺少gettext模块和bcmath模块 一下为解决步骤 1 进入到PHP源码包目录下的ext目录 cd soft php 5 3 13 ext 2 会看到ext目录下有gettext目录和bcmath目录 3 进入gett
  • 对称二叉树

    这是蒟蒻认真写的第一篇题解 如有欠缺 请理解 题目描述 一棵有点权的有根树如果满足以下条件 则被轩轩称为对称二叉树 1 二叉树 2 将这棵树所有节点的左右子树交换 新树和原树对应位置的结构相同且点权相等 下图中节点内的数字为权值 节点外的
  • 下载google code中源码的几个工具

    Google code 一般以三种命令行方式提供源代码 格式如下 plain view plain copy hg clone https code google com p xxx git clone https code google
  • redis中批量删除key

    1 删除所有的key 可以使用redis自身的命令 flushdb 删除当前数据库中的所有Key flushall 删除所有数据库中的key 2 使用linux中的xargs来删除所有的key redis cli keys xargs re
  • 【R】【线性回归分析实验】

    文章目录 实验思维导图 1 收集 探索和准备数据 1 1 收集数据 1 2 探索和准备数据 2 基于数据训练模型 2 1 使用线性回归函数 2 2 建立模型 3 评估模型的性能 4 提高模型的性能 4 1 将年龄非线性化 4 2 数值转换二
  • 愉快地使用你的 Git Bash 工具

    在windows下使用git时自然会用到Git Bash 下面我分享一些Git Bash的使用技巧 欢迎补充 官方下载地址 http msysgit github io 设置初始路径 默认的 Git Bash 初始路径为安装目录 每次打开都
  • mvc三层架构

    三层架构是指 视图层View 业务逻辑层Service 持久层DAO View层 用于接收用户提交请求的代码 Service层 系统的业务逻辑主要在这里完成 DAO层 直接操作数据库的代码 主要是做数据持久层的工作 扩展 MVC指MVC模式
  • MySql 及MyBatis数据的批量操作

    1 Mybatis操作 1 批量更新
  • python hashlib_python import hashlib出现问题

    import hashlib时出现如下问题 gt gt gt import hashlib ERROR root code for hash md5 was not found Traceback most recent call last
  • ubuntu安装向日葵报错 处理时遇到错误:/var/cache/apt/archives/apport_2.20.1-0ubuntu2.4_all.deb

    执行安装命令 sudo dpkg i sunloginclient deb后 可能会报错 在处理时有错误发生 sunloginclient 此时执行 sudo apt get install f y 然后重新安装即可 但按以上方法操作后不一
  • RSA进阶之维纳攻击(wiener-attack )

    维纳攻击 场景 e很大 例题 第七届山东网络安全技能大赛 链接 https pan baidu com s 1IRInw3pB7SQfp3MxRJW17A 提取码 lcn3 e很大 妥了 维纳攻击 脚本在github上 https gith
  • 【完全开源】小安派-DSL 屏幕驱动开发板

    文章目录 概述 系统框图 2 8 3 5寸 屏电路 2 4寸触摸屏电路 1 28 寸圆形触摸屏电路 背光控制 关于Demo 1 28寸圆形屏智能手表Demo 2 4寸屏音乐播放器Demo 3 5寸屏天气站Demo 完全开源 概述 小安派 D
  • Altium Designer导入元器件3D封装

    一 前言 AD用了也有几年了 一开始只是单独用于制版 没有别的用途 随着工龄的增长 需求的内容也是越来越多 逐渐接触了3D模型建立 结构设计 有时需要导入PCB 3D效果 发现PCB导出的大多数只有芯片和电阻电容 很多开关 端子等特殊封装的
  • 前端开发利器: Bootstrap + AngularJS

    概述 在HTML5盛行的互联网时代 涌现诸多的前端html css js框架 基于其 适用范围 licence 发展前景等因素 本人对比总结出其中的两个佼佼者 分别是侧重页面美化展现的 Bootstrap 和侧重页面逻辑控制的 Angula
  • LeetCode题目笔记--2.两数相加

    这个博客系列记录我刷LeetCode过程中的一些循序渐进的思路和想法 希望能坚持下去 如果读者老爷觉得有帮助 就点个赞吧 题目描述 给出两个 非空 的链表用来表示两个非负的整数 其中 它们各自的位数是按照 逆序 的方式存储的 并且它们的每个
  • 数据导入hudi报错,错将字段写到hdfs路径上

    报错信息 Error trying to save partition metadata this is okay as long as atleast 1 of these succced file qiche hudi table 冬天
  • 2020无人用的邮箱和密码大全_Amazon后台登录密码错误!如何辨别账号是否被冻结?...

    啊你绝对不知道 这里每天都会更新一些跨境电商实时动态 卖家经验交流 跨境平台动态研究 曝光销售技巧 转化技巧 站外引流的方法 亚马逊后台登录密码错误 如何辨别账号是否被冻结 很多人一看到自己账号登录不进去就开始心慌 因为2018年就因为亚马
  • [QT编程系列-6]:C++图形用户界面编程,QT框架快速入门培训 - 3- QT窗体设计 - 自定义菜单栏

    目录 3 QT窗体设计 3 1 自定义菜单 3 1 1 设计目标 编辑 3 1 2 创建过程 编辑 3 QT窗体设计 3 1 自定义菜单 3 1 1 设计目标 3 1 2 创建过程 在Qt中 Windows窗口和Widget窗口是两种不同的
  • 如何用python加NLP打造自己的智能问答机器人

    一 基本流程 我们可以参照以下流程进行智能机器人的程序设计工作 1 利用已有的数据对 TfidfVectorizer 模型进行训练 2 利用训练好的TF IDF模型进行训练数据data0和真实数据data1的TFIDF值求解 3 通过余弦相
  • Spring Boot 3.x 构建系统&Starters

    系列文章目录 系列文章 Spring Boot 3 x 系列教程 文章目录 系列文章目录 前言 一 依赖管理 二 Maven 三 Spring Boot Maven Plugin 四 Starters 前言 Spring Boot 建议选择