一、普通打包
1.此方式为传统打包,打包整个src及lib为一个jar,通常是50-100M,如果是docker镜像化,推送镜像就比较耗时
2.此方式1.4.2版本后不支持jsp,需要显示指定版本号1.4.2
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
二、lib、jar分层打包
1.此方式可以解决springboot2.x不支持jsp的问题
2.打包后会有一个lib目录以及一个项目jar,可以直接java -jar xx.jar启动
3.如果lib依赖没有更改的话,部署时只上传xx.jar即可重新部署
<!-- 分层打包1,打包源码,指定外部lib路径 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>${mainClass}</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<!-- 分层打包2,拷贝依赖到jar外面的lib目录 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.2</version>
<executions>
<execution>
<id>copy-lib</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
<includeScope>compile</includeScope>
</configuration>
</plugin>
三、springboot2.3.0新特性 layer分层打包
此方式可以使docker构建分层,推镜像更方便快捷,如果不修改lib,只修改src,则只会push src
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.0.RELEASE</version>
<configuration>
<layers>
<enabled>true</enabled>
</layers>
</configuration>
</plugin>