项目环境简介:
springboot版本:2.2.5.RELEASE
tomcat版本:8.0.24
相对于jar包,原项目需要做如下修改:
1.修改启动类:原启动类需要继承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);
}
}
2. 修改pom.xml文件:spring-boot-starter-tomcat参与编译和测试,不参与打包。
<!-- 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>
<!-- tomcat -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!-- 在编译和测试过程有效,打包时不会加入 -->
<scope>provided</scope>
</dependency>
3. 修改pom.xml,指定打war包,指定入口类。增加了<packaging>war</packaging>配置后,pom.xml文件可能会报错,但是不影响打包。
<packaging>war</packaging>
<!-- Package as a war -->
<build>
<finalName>springbootdemo</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--配置springboot入口类 -->
<configuration>
<mainClass>com.taikanglife.demo.Application</mainClass>
</configuration>
</plugin>
</plugins>
</build>
4. application.yml文件中 server.port和server.servlet.context-path 失效,具体运行时的端口的上下文依赖于tomcat服务的端口和war包在webapps文件夹中的文件名。
5. application.yml文件中 spring.profiles.active 有效,可以指定war包的测试或生产运行时环境。
6. 将打好的war包,放在tomcat的webapps文件夹下,运行tomcat的startup.bat或start.sh。访问ip:port/{war包文件名}/{项目内requestMapping路径}即可。