maven-assembly-plugin
- 定制化打包插件
- 项目中往往有很多shell脚本、SQL脚本、.properties及.xml配置项等,采用assembly插件可以让输出的结构清晰而标准化。
- 配合着shell启动脚本往往可以达到秒启动的效果,尤其在依赖其他项目或native包的服务部署更为明显,大大的加快了部署效率
如何使用
要使用该插件,就在项目pom文件中的build>plugins配置中加入以下内容。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<!-- 指定assembly xml文件 -->
<descriptor>src/assembly/distribution.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<!-- 名称 -->
<id>make-assembly</id>
<!-- 绑定到package生命周期 -->
<phase>package</phase>
<goals>
<!-- 标识只运行一次 -->
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
src/assembly/distribution.xml文件描述如下
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/mavenassembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>distribution</id>
<formats>
<format>dir</format>
<!-- 文件类型 -->
<format>tar.gz</format>
</formats>
<moduleSets>
<moduleSet>
<sources>
<excludes>
<exclude>src/main/resources/*.properties</exclude>
<exclude>src/main/resources/*.xml</exclude>
</excludes>
</sources>
</moduleSet>
</moduleSets>
<fileSets>
<fileSet>
<!-- 从当前项目的根目录下的doc文件夹中复制所有文件到压缩文件里doc目录下 -->
<outputDirectory>/doc</outputDirectory>
<directory>doc</directory>
<includes>
<include>**/*</include>
</includes>
</fileSet>
<!-- 从当前项目的根目录下的sql文件夹中复制后缀是.sql文件到压缩文件里sql目录下 -->
<fileSet>
<outputDirectory>/sql</outputDirectory>
<directory>sql</directory>
<includes>
<include>*.sql</include>
</includes>
</fileSet>
<!-- 默认创建压缩目录里tmp文件夹可以留作java启动指定临时文件目录 -->
<fileSet>
<outputDirectory>/tmp</outputDirectory>
<directory>target</directory>
<excludes>
<exclude>**/*</exclude>
</excludes>
</fileSet>
<!-- 默认创建压缩目录里logs文件夹可以留作java启动指定日志文件目录 -->
<fileSet>
<outputDirectory>/logs</outputDirectory>
<directory>target</directory>
<excludes>
<exclude>**/*</exclude>
</excludes>
</fileSet>
<fileSet>
<outputDirectory>/run</outputDirectory>
<directory>target</directory>
<excludes>
<exclude>**/*</exclude>
</excludes>
</fileSet>
<!-- 获取特定后缀的jar文件作为项目的启动jar -->
<fileSet>
<outputDirectory>/lib</outputDirectory>
<directory>target</directory>
<includes>
<include>*-with-dependencies.jar</include>
</includes>
</fileSet>
<!-- 获取bin目录下脚本指定文件格式为unix,并赋权为744 -->
<fileSet>
<outputDirectory>/bin</outputDirectory>
<directory>target/classes/bin</directory>
<lineEnding>unix</lineEnding>
<fileMode>0744</fileMode>
</fileSet>
<!-- 获取项目路径下的flik的所有资源,打包到压缩目录,这里处理了后缀为.sh的文件,先排除后再转换格式引入 -->
<fileSet>
<outputDirectory>/flink</outputDirectory>
<directory>flink</directory>
<fileMode>0744</fileMode>
<excludes>
<exclude>*.sh</exclude>
</excludes>
</fileSet>
<fileSet>
<outputDirectory>/flink</outputDirectory>
<directory>flink</directory>
<fileMode>0744</fileMode>
<includes>
<include>*.sh</include>
</includes>
<lineEnding>unix</lineEnding>
</fileSet>
<!-- 获取配置文件,打包到压缩文件conf目录下 -->
<fileSet>
<outputDirectory>conf</outputDirectory>
<directory>target/classes</directory>
<includes>
<include>*.yaml</include>
<include>*.yml</include>
<include>*.properties</include>
<include>*.setting</include>
<include>*.xml</include>
<include>sample/*</include>
<include>material/*</include>
</includes>
</fileSet>
</fileSets>
</assembly>
此时使用maven打包,就可以得到一个tar.gz的构建产物,配合着启动脚本使用更加强大 maven package