因某些原因,需要将springboot开发的应用,独立部署到tomcat服务器下运行。
1、首先在pom.xml文件中,将打包格式改成war
<packaging>war</packaging>
2、不指定war包名,默认war包名是pom.xml中name-version名称拼接(形如your-project-0.0.1-SNAPSHOT),建议自定义war包名,请修改finalName为你的包名
<build>
<finalName>yourname-boot</finalName>
</build>
3、因为springboot全家桶自带tomcat,因此不需打包tomcat,选择运行时忽略<scope>provided</scope>,避免不必要的冲突。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
也可选择在spring-boot-starter-web中排除
<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>
4、修改启动类,继承SpringBootServletInitializer,并重写configure方法
@SpringBootApplication
public class SpringbootApplication extends SpringBootServletInitializer {
private Logger logger = LoggerFactory.getLogger(SpringbootApplication.class);
public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
logger.info("...俺的war成功启动了...");
return builder.sources(SpringbootApplication.class);
}
}
5、默认打包通常会生成org和Boot-INF等文件夹,所以不使用默认spring-boot-maven-plugin插件打包,改用maven插件打包,不介意当俺没说~
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
6、最后,通过maven依次clean和package,在项目根目录target文件夹中找到你的war宝,搞定~
7、在tomcat中顺利发布war包,踩了不少坑,且听下回分解