上次写了篇 《SpringBoot迭代发布JAR瘦身配置》,但有一个问题,所有的第三方JAR位于lib目录中,不利于传输到服务器,因此应该考虑将此目录压缩打包,再传输到服务器,服务器解压即可使用。
经过一番google,找到类似的plugin(maven-assembly-plugin),看官网的介绍:
The Assembly Plugin for Maven is primarily intended to allow users to aggregate the project output along with its dependencies, modules, site documentation, and other files into a single distributable archive.
大致意思就是:Assembly Plugin 主要是为了允许用户将项目输出及其依赖项、模块、文档和其他文件聚合到一个可发布的文件中。通俗一点就是可以定制化自己想要打包的文件,支持打包的格式有:zip、tar、tar.gz (or tgz)、tar.bz2 (or tbz2)、tar.snappy、tar.xz (or txz)、jar、dir、war。
接下来我就根据自己的需求定制我想要的包,我想把 target/lib 目录压缩打包,
- 在pom的配置如下:
<!-- lib 文件夹压缩打包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<finalName>${project.artifactId}-libs</finalName>
<encoding>UTF-8</encoding>
<descriptors>
<descriptor>assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
- 在项目根目录下新建文件assembly.xml,内容如下:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/3.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/3.1.0 http://maven.apache.org/xsd/assembly-3.1.0.xsd">
<formats>
<format>tar.gz</format>
</formats>
<id>${project.version}</id>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>target/lib</directory>
<outputDirectory>lib</outputDirectory>
</fileSet>
</fileSets>
</assembly>
到此,配置就写完了,执行打包命令:mvn clean package -Dmaven.test.skip=true,就可以在target目录下看到我们的压缩文件:
组合上篇 《SpringBoot迭代发布JAR瘦身配置》的配置,就可以实现把spring boot 项目打包成thin jar 以及把第三方jar打成压缩文件。当然,我这里用maven-assembly-plugin,根本就是大材小用,还有点违背此plugin的初衷,我只是取巧了而已。另外,如果用jenkins发布的话,用命令将lib目录压缩打包也是可以的,有时候解决问题的办法很多很多,任君选择!
来源:oschina
链接:https://my.oschina.net/u/2919251/blog/1929020