Spring Boot專案部署到外部Tomcat伺服器
阿新 • • 發佈:2019-01-11
前言
Spring Boot專案一般都是內嵌tomcat或者jetty伺服器執行,很少用war包部署到外部的服務容器,即使放到linux中,一般也是直接啟動Application類,但是有些時候我們需要部署到外部的伺服器,這對於Spring Boot來說卻有點麻煩
部署步驟
一、 修改pom
- 首先把package改為war
<packaging>war</packaging>
- 由於spring-boot-starter-web中內建了tomcat,所以要把它移除
<dependency>
<groupId>org.springframework.boot</groupId >
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions >
</dependency>
但是為了測試,最好這樣引用:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!-- 要為provided-->
<scope>provided</scope>
</dependency>
二、提供一個SpringBootServletInitializer子類,並重寫configure方法
@SpringBootApplication
public class EasyDeployWarApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(EasyDeployWarApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(EasyDeployWarApplication.class, args);
}
}
如果這裡報異常,Caused by: java.lang.IllegalStateException: No SpringApplication sources have been defined. Either override the configure method or add an @Configuration annotation,這是由於專案中有兩個Application啟動類導致的,刪除原來那個即可
三、可以通過war外掛來指定war包的名字
<build>
<plugins>
<!-- war部署使用-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warName>easydeploy</warName>
</configuration>
</plugin>
</plugins>
</build>
假如專案的controller路徑為index,則此時的訪問路徑為:
localhost:8080/easydeploy/index