spring boot web專案部署到外部tomcat
阿新 • • 發佈:2019-02-07
spring boot專案打成war包部署到外部tomcat
部署到外部tomcat 在打包之前需要先將spring boot內建的tomcat去除
去除內建tomcat有2種
1:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>
2: 不使用第一種可直接在pom檔案中直接新增tomcat的資訊,但是需要將使用的範圍定義成provided
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
有的專案可能需要自己新增java-servlete-api的資訊
去除tomcat相關jar之後,需要新建一個類實現SpringBootServletInitializer 重寫configure方法
@SpringBootApplication public class ServleteInitService extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure( SpringApplicationBuilder application) { //App類為springboot 專案的啟動類 return application.sources(App.class); }
打包如下:
myeclipse maven 命令 package 或者install 都能打包,區別在與package 會在target目錄下生產打包檔案,install會在本地maven庫中生產打包檔案
將生成的war 放到tomcat webapps目錄下,一般將XXX.war改名成ROOT.war
可能遇到的問題:
1:如果打的war 部署到tomcat7或者版本更低的tomcat中 可能會導致專案無法啟動,網上有人說可以spring boot預設支援的是8 所以需要修改pom中tomcat的版本,新增
<properties>
<tomcat.version>7.0.69</tomcat.version>
</properties>
但是 我這邊配置了之後並不好用,所以無奈只能換成tomcat8 之後啟動成功:
2:有時候打war時 可能自己的一些靜態檔案未能打到war中,導致訪問頁面時出現找不到js,css等 正常情況下預設的是打包java/main/resources 檔案下所有的檔案,如果未能打到war中 可嘗試使用<resources>標籤指定新增檔案