Spring Boot-18-springboot maven 使用技巧
引入 springboot maven 插件
使用 springboot maven 插件的方式比较简单。
4.0.0
org.springframework.boot
spring-boot-maven-plugin
如果使用里程碑或快照版本,则还需要添加适当的pluginRepository元素,如以下清单所示:
spring-snapshots
https://repo.spring.io/snapshot
spring-milestones
https://repo.spring.io/milestone
依赖包管理的 2 种方式
springboot里会引入很多springboot starter依赖,这些依赖的版本号统一管理,springboot有几种方案可以选择。
继承 parent
在pom.xml里添加
org.springframework.boot
spring-boot-dependencies
1.5.4.RELEASE
导入时,不用指定版本号:
org.springframework.boot
spring-boot-starter
使用该设置,您还可以通过覆盖自己项目中的属性来覆盖各个依赖项。
例如,要使用不同版本的SLF4J库和Spring Data发布系列,可以将以下内容添加到pom.xml中:
1.7.30
Moore-SR6
import 导入方式
有时候 parent 继承的方式不是很方便使用,因为 maven 只允许继承一个父类。
org.springframework.boot
spring-boot-dependencies
1.5.4.RELEASE
pom
import
导入时,不用指定版本号:
org.springframework.boot
spring-boot-starter
如上所述,前面的示例设置不允许您使用属性覆盖各个依赖项。
为了获得相同的结果,您需要在spring-boot-dependencies条目之前的项目的dependencyManagement部分中添加条目。
例如,要使用不同版本的SLF4J库和Spring Data发布系列,可以将以下元素添加到pom.xml中:
org.slf4j
slf4j-api
1.7.30
org.springframework.data
spring-data-releasetrain
2020.0.0-SR1
pom
import
org.springframework.boot
spring-boot-dependencies
2.4.1
pom
import
在命令行上覆盖设置
从spring-boot开始,该插件提供了许多用户属性,可让您从命令行自定义配置。
例如,您可以调整配置文件以在运行应用程序时启用,如下所示:
$ mvn spring-boot:run -Dspring-boot.run.profiles=dev,local
如果在允许它们在命令行上被覆盖时都希望有一个默认值,则应结合使用用户提供的项目属性和MOJO配置。
local,dev
org.springframework.boot
spring-boot-maven-plugin
${app.profiles}
以上内容确保默认情况下启用了 local 和 dev。
现在公开了一个专用属性,也可以在命令行中覆盖它:
$ mvn spring-boot:run -Dapp.profiles=test
打包可执行档案
该插件可以创建包含应用程序所有依赖项的可执行归档文件(jar文件和war文件),然后可以使用java -jar运行。
打包可执行归档文件是由重新打包目标执行的,如以下示例所示:
org.springframework.boot
spring-boot-maven-plugin
repackage
如果您使用的是spring-boot-starter-parent,则已经使用重新打包执行ID预配置了此类执行,因此仅应添加插件定义。
使用 maven 运行 springboot 项目
该插件包括一个运行目标,可用于从命令行启动您的应用程序,如以下示例所示:
$ mvn spring-boot:run
热部署
Spring Boot devtools是一个模块,用于改善在使用Spring Boot应用程序时的开发时间体验。
要启用它,只需将以下依赖项添加到您的项目中:
org.springframework.boot
spring-boot-devtools
true
当devtools运行时,它会在重新编译应用程序时检测到更改并自动刷新它。
这不仅适用于资源,而且适用于代码。
它还提供了LiveReload服务器,以便它可以在发生任何变化时自动触发浏览器刷新。
还可以将Devtools配置为仅在静态资源发生更改时刷新浏览器(并忽略代码中的任何更改)。
只需在项目中包括以下属性:
spring.devtools.remote.restart.enabled=false
在devtools之前,该插件默认情况下支持资源的热刷新,现在已禁用它,以支持上述解决方案。
您可以随时通过配置项目来还原它:
org.springframework.boot
spring-boot-maven-plugin
true
启用addResources时,在运行应用程序时,任何 src/main/resources
目录都将添加到应用程序类路径中,并且将删除在 target/classes
中发现的所有重复项。
这样可以热刷新资源,这在开发Web应用程序时非常有用。
例如,您可以处理HTML,CSS或JavaScript文件,并且无需重新编译应用程序即可立即查看更改。
这也是允许您的前端开发人员进行工作而无需下载和安装Java IDE的一种有用方法。
小结
希望本文对你有帮助,如果有其他想法的话,也可以评论区和大家分享哦。
各位极客的点赞收藏转发,是老马持续写作的最大动力!
我是老马,期待与你的下次重逢。
参考资料
https://docs.spring.io/spring-boot/docs/2.4.1/maven-plugin/reference/htmlsingle/#help