SpringBoot项目打包部署
1. jar包部署
-
添加一个插件
1<!-- 打包插件 --> 2<build> 3 <plugins> 4 <plugin> 5 <groupId>org.springframework.boot</groupId> 6 <artifactId>spring-boot-maven-plugin</artifactId> 7 </plugin> 8 </plugins> 9</build> -
这种使用SpringBoot内嵌的Tomcat进行部署。SpringBoot在不指定打包的时候默认jar包形式
<packaging>jar</packaging> -
使用命令启动部署
java -jar xxx.jar
注意存在第三方jar的情况
2. war包部署
-
添加插件如上
-
打包方式修改为war
<packaging>war</packaging> -
添加tomcat插件,spring boot本身有一个内嵌的tomcat,如果不做其他配置直接打包,就会生成一个jar包。 所以我们引入外部tomcat
1<!-- 外部 tomcat --> 2<dependency> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-starter-tomcat</artifactId> 5</dependency> -
在启动类中做如下配置,继承SpringBootServletInitializer,重写configure方法
1@SpringBootApplication 2public class MyApplication extends SpringBootServletInitializer { 3 4 public static void main(String[] args) { 5 SpringApplication.run(MyApplication.class, args); 6 } 7 8 @Override 9 protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { 10 return builder.sources(MyApplication.class); 11 } 12} -
打包(war)
- 切换到项目所在路径,使用命令
mvn clean package - 使用IDE工具,例如IDEA自带打包工具

- 切换到项目所在路径,使用命令
-
部署,拷贝war包到tomcat的webapps路径下,启动tomcat
注意:这种war包方式端口号使用tomcat的,项目名使用war包的名字,对于application.yml配置文件里指定的端口号和项目名会覆盖掉。
注意第三方jar的情况
使用maven的打包插件,打包方式还是如上。
1<build> 2 <!--设置maven-war-plugins插件,否则外部依赖无法打进war包 --> 3 <plugins> 4 <plugin> 5 <groupId>org.apache.maven.plugins</groupId> 6 <artifactId>maven-war-plugin</artifactId> 7 <configuration> 8 <webResources> 9 <resource> 10 <directory>src/main/resources/jar/</directory> 11 <targetPath>WEB-INF/lib</targetPath> 12 <filtering>false</filtering> 13 <includes> 14 <include>**/*.jar</include> 15 </includes> 16 </resource> 17 </webResources> 18 </configuration> 19 </plugin> 20 </plugins> 21 </build>
注意:打包插件不能再用springboot提供的