SpringBoot 爲當前最流行的JAVA框架 , 內嵌了 Tomcat 服務器 , 我們不用再像以前 Spring 那樣打包成 war , 然後將 war 扔到 tomcat 中運行 。 我們現在可以直接將 SpringBoot 項目打包爲一個內置 tomcat 的可運行 jar , 通過 java -jar xxx.jar 直接運行 (方便易用) 。
打包 SpringBoot 的方式有很多
- 使用 Maven打包 jar (主流)
- 使用各種開發工具打包Jar . 如 : idea , eclipse 等等 。
這裏我們使用主流的Maven方式
1、在pom.xml中添加SpringBoot Maven插件 :
<!-- <build > 主要用於編譯設置 -->
<build>
<!-- 定義打包成jar的名字 -->
<!-- 這裏如果不定義 , 打包成的jar名字格式爲 : <artifactId> + <version> -->
<finalName>thymeleaf</finalName>
<plugins>
<!--SpringBoot maven插件-->
<!-- 可以將應用打成一個可執行的jar包 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- 設置啓動入口 -->
<!-- manClass即使不配置 , SprinBoot也在打包的時候也清楚入口是哪個 , 其實不用配置 -->
<configuration>
<mainClass>com.bella.ThymeleafApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
2、進入項目目錄
- 通過開發工具進入項目 (如 : idea Terminal)
- 使用 Dos / Shell 進入項目目錄
3、執行打包命令
mvn clean package -Dmaven.test.skip=true
Maven 打包成功後 , 可以通過控制檯日誌查看 Jar 的位置 . ( 如上圖 )
- Building jar : jar的絕對路徑
4、運行jar
- 打開Dos控制檯 (cmd)
- 進入 jar 目錄 (cd jar絕對路徑)
- 運行jar (java -jar xxx.jar)
異常解決
1、 打包成功,運行jar報錯 : 沒有注清單屬性
出現這種情況的原因 :
你的pom.xml 沒有引入 SpringBoot Maven插件 . (第一步 在pom.xml中添加SpringBoot Maven插件 )
注意 : 即使你沒有引入 SpringBoot Maven 插件也可以構建成功。是因爲 maven 本身可以構建成功。但是Maven並不知道你的項目入口在哪裏。這就是爲什麼要引入 SpringBoot maven 插件的原因。
2、打包失敗
這個錯誤的意思 :
maven 打包jar的時候是要覆蓋之前的jar的。但是maven發現之前的jar正在被使用 , 無法進行刪除覆蓋操作。
解決辦法 :
這種情況一般是因爲此 jar 被打開 或者 被 啓動中。 我們只要關閉了使用他的程序即可。 比如 : 關閉啓動他的 DOS 窗口。 關閉打開他的壓縮工具等等。
3、訪問Action跳轉View找不到
我這裏使用的是 SpringBoot + thymeleaf . 當訪問某個Action地址服務器進行視圖跳轉的時候報錯 : 找不到該頁面 .
比如 : 我訪問 http://127.0.0.1:1118/index
導致這個錯誤的原因 :
SpringMVC 返回視圖的時候 , 頁面目錄前面多加了一個 “/” 如 : return “/index”;
像上面返回視圖時多加了一個 “/”
你在用idea直接啓動 SpringBoot 項目訪問頁面的時候沒有問題
打包成 jar 訪問就找不到頁面
具體爲什麼 ? 沒有細緻研究。 反正去掉 “/” 就可以了。 也不影響idea的開發。
知識擴展
- SpringBoot 啓動命令大全
- SpringBoot Maven 打包命令大全