一、在SpringBoot项目的pom文件中添加依赖,移除tomcat依赖或者将tomcat依赖scope改为provide:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除嵌入式tomcat插件 -->
<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>
<!--修改内置tomcat为外置-->
<scope>provided</scope>
</dependency>
注:spring-boot-starter-web自动帮我们引入了web模块开发需要的相关jar包,配置成为一个SpringMVC的应用,并且内置了tomcat插件;且spring-boot-starter-web
包含spring-boot-starter-tomcat,如果
不需要web开发的jar包,则可单独使用spring-boot-starter-tomcat;spring-boot-starter-tomcat的<scope>provided</scope>代表tomcat从外部引用tomcat,只在
编译和测试阶段用带此配置的jar,并且不会被打包到lib目录下。默认值为compile,和provided相似,区别是
compile会将jar打包到外部tomcat的lib目录下
二、修改pom文件打包方式就改成war
<packaging>war</packaging>
三、修改启动类:
启动类集成SpringBootServletInitializer 、重写configure方法
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Application.class);
}
}
注意:外部的tomcat部署应用的以后,application.properties(或者application.yml)中配置的server.port= 和server.servlet.context-path=将会失效,请使用外部tomcat的端口,在webapps下项目名进行访问。为了防止应用上下文所导致的项目访问资源加载不到的问题,建议pom.xml文件中<build></build>标签中添加<finalName></finalName>标签:
<build>
<!-- 应与application.properties(或application.yml)中context-path保持一致 -->
<finalName>war包名称</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
四、idea打包操作生成war包:
在idea菜单栏中找到Build---->build Arufacts生成war,生成的war包会在target文件夹中找到
注: