一、maven-assembly-plugin插件介绍
Assembly 插件的主要作用是,允许用户将项目输出与它的依赖项、模块、站点文档、和其他文件一起组装成一个可分发的归档文件,简单的说,就是自定义打包的工具,有自己的配置文件(Assembly描述符文件)。微服务使用这个插件的概率比较高,平时普通的项目不需要这样的实现方式。
使用此插件有两个步骤:
第1步骤:pom.xml文件里配置maven-assembly-plugin,指定描述文件
第2步骤:引入Assembly描述符文件。配置Assembly描述符文件信息,如下:
?xml version="1.0" encoding="utf-8"?>
<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/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<!-- id 标识符,添加到生成文件名称的后缀符-->
<id>${project.version}</id>
<!-- 指定打包格式。maven-assembly-plugin插件支持的打包格式有zip、tar、tar.gz (or tgz)、tar.bz2 (or tbz2)、jar、dir、war,可以同时指定多个打包格式 -->
<formats>
<format>jar</format>
</formats>
<!-- 指定打的包是否包含打包层目录(比如finalName是terminal-dispatch,当值为true,所有文件被放在包内的terminal-dispatch目录下,否则直接放在包的根目录下)-->
<includeBaseDirectory>true</includeBaseDirectory>
<!-- 指定将工程依赖的包打到包里的指定目录下 -->
<dependencySets>
<dependencySet>
<useProjectArtifact>true</useProjectArtifact> <!-- 指定打包时是否包含工程自身生成的jar包 -->
<outputDirectory>lib</outputDirectory> <!-- 指定将这些依赖包打到包里lib目录下 -->
<scope>runtime</scope> <!-- 用于管理依赖的部署,runtime表示只在运行时使用 -->
</dependencySet>
</dependencySets>
<!-- 指定要包含的文件集,可以定义多个fileSet -->
<fileSets>
<fileSet>
<directory>src/main/java</directory> <!-- 指定要打成jar包的目录(下的文件及文件夹) -->
<outputDirectory>bin</outputDirectory> <!-- 指定要将当前目录(<directory>标签中的目录放在归档文件(要打的jar包)bin目录下) -->
<includes>
<include>dao</include> <!-- 精确控制要包含的文件,<exclude>用于精确控制要排除的文件 -->
<include>server</include>
</includes>
</fileSet>
<fileSet>
<directory>src/main/resources</directory>
<outputDirectory>conf</outputDirectory>
<includes>
<include>config.properties</include>
<include>logback.xml</include>
</includes>
</fileSet>
</fileSets>
</assembly>
二、实战
项目路径:
添加依赖
父级:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>${maven-assembly-plugin.version}</version> </plugin>
子级:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <configuration> <!-- 打包的文件名称是否包含Assembly描述符文件的id --> <appendAssemblyId>false</appendAssemblyId> <descriptors> <descriptor>src/main/assembly/depolyment.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>dist</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin>
Assembly描述符文件路径
Assembly描述符文件配置
<?xml version="1.0" encoding="UTF-8"?> <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd"> <id>dist</id> <formats> <format>zip</format> </formats> <includeBaseDirectory>true</includeBaseDirectory> <fileSets> <fileSet> <directory>src/main/java</directory> <outputDirectory>bin/</outputDirectory> </fileSet> <fileSet> <directory>src/main/resources</directory> <outputDirectory>bin/</outputDirectory> </fileSet> </fileSets> <dependencySets> <dependencySet> <outputDirectory>lib/</outputDirectory> <scope>runtime</scope> <excludes> <exclude>${groupId}:${artifactId}</exclude> </excludes> </dependencySet> </dependencySets> </assembly>
执行maven打包,target生成zip文件,如下图:
解压缩目录:
以上打包方法的主要作用是生成微服务admin运行所需要的jar文件,下一篇继续学习整合springboot微服务模块maven打包整合终结篇。
来源:oschina
链接:https://my.oschina.net/u/4011698/blog/3102704