把项目部署到云服务器上时,我们需要把项目的war包放入tomcat的webapp下而不能使用jar包
第一种方法比较简单
我们在创建spring boot项目时,可以直接选择war包
装了maven插件直接cleca install就ok了在target里面可以看见
第二种方法
当我们创建时选择是jar时就一定麻烦了
1首先在pom中加入
<packaging>war</packaging>
<groupId>com.hou</groupId>
<artifactId>consumer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
2.再加入javax.servlet-api依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
3.修改spring-boot-starter-web,排除Spring Boot内置的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>
4.添加maven插件和打包跳过单元测试代码
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<!--war包的名字-->
<warName>nanhuan</warName>
</configuration>
</plugin>
<!-- 打包跳过测试代码 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
5.启动类继承SpringBootServletInitializer,写configure方法
public class ConsumerApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(ConsumerApplication.class);
}
}
cleca install就ok了在target里面可以看见
就ok了
注意
如果启动报缺少 ServletWebServerFactory bean
加入spring-boot-starter-tomcat依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>compile</scope>
</dependency>