參考資料:web
https://blog.csdn.net/rico_zhou/article/details/83415114spring
https://blog.csdn.net/pz641/article/details/85029431瀏覽器
https://blog.csdn.net/m0_37981898/article/details/82155912tomcat
由於一些特殊須要,要將springboot 項目由jar包改成war包發佈,記錄實現的過程和出現的問題:springboot
1. 首先,將pom.xml中打包配置改爲war網絡
2. springboot中自帶tomcat,打jar包會用這個tomcat啓動,咱們須要打包的時候排除這個自帶的tomcat,有兩種方式(如下圖片來自網絡(本身實在不想截圖了..))app
方式一:eclipse
方式二: 建議使用webapp
3. 更改啓動類,繼承SpringBootServletInitializer ,覆蓋configure(),把啓動類Application註冊進去, 注意: 此類須要放在Application啓動類同級目錄ide
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; /** * springboot 項目打成war包訪問,初始化啓動Spring應用上下文 * @author qxl * */ public class SpringBootStartApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(Application.class); } }
4. 打war包發佈,兩種方式
方式一 : 執行:mvn clean package ,打包結束後便可在target文件夾中找到war包,或者在eclipse中右擊項目>Run as>Maven install打包結束一樣在target目錄下找到war
方式二 : idea 工具導出war包
5. 部署到 tomcat, springBoot不一樣版本內置tomcat版本是不同的(下面的圖也是截的別人的),這裏建議使用8.5以上版本
將項目部署到tomcat後啓動,項目是能夠啓動的,可是不少資源文件失效找不到了,緣由是tomcat啓動項目,須要帶上項目名,以前jar包訪問資源路徑沒有項目名,致使資源路徑錯誤
解決方案有兩種: (注意,如下兩種方式必定要刪除ROOT文件夾,不然會有問題)
一 : 模擬Tomcat啓動頁面,替換 ROOT文件夾
將webapps目錄下的ROOT文件夾刪除,將本身的war包改名爲ROOT.war,從新啓動tomcat,瀏覽器中輸入localhost:8080便可訪問
二 : 修改tomcat配置,不須要項目名訪問,仍是須要先刪除ROOT文件夾
修改conf目錄下server.xml
修改host內容,將
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
改成 :
<Host name="localhost" appBase="" unpackWARs="true" autoDeploy="true">
<Context docBase="webapps/你的項目名" path="" reloadable="true" source="org.eclipse.jst.jee.server:你的項目名"/>
以下圖,改以前:
改以後:(vrs爲項目名稱)
修改好以後運行tomcat,能夠不須要項目路徑訪問項目,也就是說訪問 http://localhost:8080就好了