傳統的 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技術棧" ,公衆號第一時間推送!