传统的 Java 应用程序都须要打一个 war 包,并到到 Tomcat webapps 目录下运行。html
Java 支持打 Jar 包,但没有提供一个标准的方式在一个 Jar 包内再加载嵌入别的 Jar 包,通常须要扩展类加载器来实现,即便这样,也作不到打成一个包运行,由于没有 Servlet 容器。java
有了 Spring Boot 框架以后,这一切都变得简单,咱们能够很方便的将应用程序打成一个可执行 Jar 包。web
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <classifier>exec-${env}</classifier> </configuration> </execution> </executions> </plugin>
这里是添加了一个 Maven 打包插件,经过配置能够定制打成的 Jar 包的格式,如:javastack-exec-dev.jar。spring
若是你是用的 spring-boot-starter-parent 方式来使用 Spring Boot,那就不用写 executions 选项,由于它包括了 executions repackage 构建配置。微信
这个插件的更多用法参考:app
https://docs.spring.io/spring...
使用 mvn package 命令或者 IDE 中的 Maven 插件均可以打包。Maven 不熟悉的请关注Java技术栈微信公众号,在后台回复:maven,干货栈长我都整理好了。框架
打完包以后,在项目 target 目录就能够看到打成的 Jar 包。webapp
这个 Jar 包除了包括编译完的 class 文件,还内置了 Servlet 容器,并集成了全部须要依赖的其余 Jar 包库,咱们来看下这个 Jar 包的目录结构。maven
├─BOOT-INF │ ├─classes │ │ └─cn │ │ └─javastack │ │ └─demo │ └─lib ├─META-INF │ └─maven │ └─cn.javastack │ └─demo └─org └─springframework └─boot └─loader ├─archive ├─data ├─jar └─util
在文件 META-INFMANIFEST.MF 中找到应用程序启动类:spring-boot
Manifest-Version: 1.0 Archiver-Version: Plexus Archiver Built-By: javastack Start-Class: cn.javastack.demo.Application Spring-Boot-Classes: BOOT-INF/classes/ Spring-Boot-Lib: BOOT-INF/lib/ Spring-Boot-Version: 2.1.3.RELEASE Created-By: Apache Maven 3.5.0 Build-Jdk: 1.8.0_151 Main-Class: org.springframework.boot.loader.JarLauncher
运行命令格式:
$ java -jar xxx.jar
这个命令的更多用法请看这篇文章:Java Jar包的压缩、解压使用指南,或者关注Java技术栈微信公众号,在后台回复:java。
运行命令演示:
$ java -jar javastack-exec-dev.jar
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.1.3.RELEASE) ....... . . . ....... . . . (log output here) ....... . . . ........ Started Example in 2.536 seconds (JVM running for 2.864)
好了,跑起来了。更多运行 Spring Boot 的方法看这篇文章:运行 Spring Boot 应用的 3 种方式!。
好了,今天的分享就到这里,更多 Spring Boot 文章正在撰写中,关注Java技术栈微信公众号获取第一时间推送。
在公众号后台回复:boot,还能获取栈长整理的往期 Spring Boot 教程,都是实战干货,如下仅为部分预览。
获取全部 Spring Boot 示例代码,请关注微信公众号 "Java技术栈" 在后台回复关键字:bootcode。
未完,栈长将陆续分享 Spring Boot 最新技术教程,如今已经写了一堆存货了,关注微信公众号 "Java技术栈" ,公众号第一时间推送!