springboot打包踩坑

最近在把自己写的demo部署到服务器,因为公司的服务部署平台都是使用tomcat,所以做了笔记,记录下自己的踩坑过程。

打包分类:

  • jar
  • war

1.打包jar

1.1 pom文件修改
1
<packaging>jar</packaging>
1.2 maven打包
1
2
3
clean 

package

2.打包war

2.1 修改pom文件
1
2
3
4
5
6
7
8
<packaging>war</packaging>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!--scope provides打包会去除掉-->
<scope>provided</scope>
</dependency>
2.2 修改Application类

主要是找到入口类

1
2
3
4
5
6
7
8
9
10
11
12
@SpringBootApplication
public class PaApplication extends SpringBootServletInitializer {

public static void main(String[] args) {
SpringApplication.run(PaApplication.class, args);
}

@Override//为了打包springboot项目
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(PaApplication.class);
}
}
2.3 maven打包
1
2
3
clean 

package

3.踩坑

主要是打war包

3.1 context-path不生效

如果你application.properties包括:

springboot 2.x server.servlet.context-path=/api
springboot 1.x server.context-path=/api
那pom文件加入

1
2
3
4
5
6
7
8
9
<build>
<finalName>api</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

原因:因为打成war包,会屏蔽context-path。

3.2 tomcat启动,报错Failed to start component

原因:由于我引入了其他slf4j低版本包,与springboot的logback冲突,因此启动不了。

解决:修改pom文件

1
2
3
4
5
6
7
8
9
10
11
12
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>

0%