1、將pom.xml中默認的jar修改為war。
<packaging>war</packaging>
2、排除SpringBoot內置的Tomcat容器。
<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>
3、添加Tomcat依賴,用於編譯和測試。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <!-- 該包只在編譯和測試的時候使用 --> <scope>provided</scope> </dependency>
4、繼承org.springframework.boot.web.servlet.support.SpringBootServletInitializer,實現configure方法。
@Configuration @EnableAutoConfiguration @ComponentScan public class Application extends SpringBootServletInitializer{ public static void main(String[] args) { SpringApplication.run(Application.class, args); } /** * 工程打成war需要繼承SpringBootServletInitializer,重寫configure方法 * @date 2018年12月7日 * @author zxp */ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(Application.class); } }
5、注意
使用外部Tomcat部署訪問的時候,application.properties(或者application.yml)中配置的
server.port=
server.servlet.context-path=
將失效,請使用Tomcat的端口。
為了防止應用上下文所導致的項目訪問資源加載不到的問題,建議pom.xml文件中<build></build>標簽下添加<finalName></finalName>標簽:
<build> <!-- 應與application.properties(或application.yml)中context-path保持一致 --> <finalName></finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <!-- 配置java版本--> <pluginManagement> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> <fork>true</fork> </configuration> </plugin> </plugins> </pluginManagement> </build>
在項目目錄下(與pom.xml文件同級),使用mvn命令打包,運行:
jar 方式打包,使用內置Tomcat:mvn clean install -Dmaven.test.skip=true
運行:java -jar 包名.jar
war方式打包,使用外置Tomcat:mvn clean package -Dmaven.test.skip=true
clean是清除之前的包,-Dmaven.test.skip=true是忽略測試代碼