Spring Boot 打包插件,真是太有用了!
栈长在之前的文章分享过关于 spring boot 打包运行的两篇文章:
不过一直没机会对 spring boot maven 插件做详细介绍。
spring boot 对 maven 一直支持很友好,栈长也一直在用 maven 进行依赖和项目管理,那么今天就讲一下这个插件的作用,非常有用!
有了 spring boot maven plugin
这个插件,我们可以将项目打成可执行的 jar 包(*.jar)以及 war 包(*.war),可以帮助我们很方便的运行 spring boot 应用。
官方地址:
主要包括以下几个目标(goals)
- spring-boot:run
可以不用打包,直接运行 spring boot 应用。
- spring-boot:repackage
可以打成可执行的运行包(*.jar/*.war)
- spring-boot:start/ spring-boot:stop
用于管理 spring 应用程序的生命周期(例如:用于集成测试)。
- spring-boot:build-info
用于生成构建信息,用于 spring boot actuator。
如何使用
下面主要讲一下前面两种 goal
的使用,后面两种用的比较少。
集成 spring boot maven plugin 插件:
<build> ... <plugins> ... <plugin> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-maven-plugin</artifactid> <version>2.2.6.release</version> </plugin> ... </plugins> ... </build>
1、直接运行 spring boot 应用
在 maven 命令行使用:
mvn spring-boot:run
如果在 ide 开发工具中,可以省去 mvn
命令:
当然,我们可以直接运行 main class,但使用 maven 插件可以有更多的功能特性,比如:切换不同环境配置(profile), 资源替换 maven resource 插件的结合使用。
默认情况下,插件运行在一个新进程中,命令行设置的 jvm 参数是不生效的,需要单独指定:
-dspring-boot.run.jvmarguments="-dspring.profiles.active=dev"
你也还可以指定其他参数:
- systempropertyvariables:系统属性变量
- environmentvariables:环境变量
除此之外,其他 jvm 参数,都可以在命令后面指定。
2、打成可执行包
来看一个完整示例:
<build> ... <plugins> ... <plugin> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-maven-plugin</artifactid> <version>2.2.6.release</version> <configuration> <mainclass>${start-class}</mainclass> <layout>jar</layout> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <classifier>exec</classifier> </configuration> </execution> </executions> </plugin> ... </plugins> ... </build>
以下几个参数都是可选的。
repackage:
最主要的是要添加 repackage
goal,用来重新打包。
layout:
layout 属性根据项目类型默认是:jar/war,具体可以设置以下几种:
- jar:可执行 jar 包;
- war:可执行 war 包;
- zip(别名:dir):和 jar 包相似,使用的是:propertieslauncher;
- none:打包所有依赖项和项目资源。不绑定任何启动加载器;
classifier:
默认情况下只会打一个包,但是如果这个模块既是其他模板的依赖,自身又需要打成可执行的运行包,那就需要用这个标签另外指定一个别名包,如:
- xxx.jar
- xxx-exec-jar
具体参考:
spring boot 打包这个插件经常会用到,大家还是要学会使用它,不然出去面试,面试官一问 spring boot 项目如何打包,你就一脸 mb 了。
另外,大家如果对 maven 不熟悉的可以在公众号java技术栈后台回复:maven,我之前也分享过一系列核心教程。
好了,今天的分享就到这里了,更多使用的方法大家都可以官方学习,觉得本文不错别忘了点个在看和转发哦!
推荐去我的博客阅读更多:
2.spring mvc、spring boot、spring cloud 系列教程
3.maven、git、eclipse、intellij idea 系列工具教程
觉得不错,别忘了点赞+转发哦!
下一篇: Tensorflow 查看变量的值方法