spring boot 项目打包成war包在tomcat中运行
前序:本人之前在校使用idea开发,当时spring boot导成war包项目在Linux系统的tomcat下运行十分简单,但是实习后,使用eclipse发现并没有那么简单,所以记录下来。
1.首先pom.xml添加 war包支持
2.去除tomcat内嵌依赖,具体为将代码改成如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions> <!-- 在starter-web内加入这段内容,即为解除了内置tomcat依赖 -->
<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>
</dependency> -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope> <!-- 添加这行代码,在项目启动时将不引入此依赖 -->
</dependency>
在starter-web中方框内加入如上代码(注释有写明).
3.对servlet,api, jsp 三个依赖均加入<scope>provided</scope>
,理由如上,项目启动时不再启用此依赖。
4.对启动类进行修改,继承SpringBootServletInitializer类,并实现SpringApplicationBuilder configure接口,代码如下:
public class Application extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
//导成war包改变启动方式
@Override
public SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Application.class);
}
}
至此,eclipse环境下spring boot项目导成war包运行在外部tomcat的代码改动完成。
5.update project。随后右击项目,run as,选择maven install,war包打包完成后会在target文件夹下显示,如果未显示刷新即可。
代码配置依赖改动后,不影响原来在eclipse中的启动方式。
6.将war包复制至tomcat的webapps文件夹内,可对war包进行改名,启动tomcat,项目运行成功。