Maven build插件之Maven-assembly-plugin自定义打包

前言
Maven-assembly-plugin是maven中针对打包任务而提供的标准插件,可以实现自定义打包。主要提供如下功能:
  • 提供一个把工程依赖元素、模块、网站文档等其他文件存放到单个归档文件里。
  • 打包成指定格式分发包,支持各种主流的格式如zip、tar.gz、jar和war等,具体打包哪些文件是高度可控的。
  • 能够自定义包含/排除指定的目录或文件。
个人理解:
Maven-assembly-plugin只是一个自定义的打包插件,本身不编译工程,工程的编译还是依赖于maven默认绑定插件中的maven-compiler-plugin来完成的。

使用步骤
  • 工程的pom.xml里配置Assembly插件。
  • 需要指定一个Assembly描述符文件,该文件指定了打包格式,包含的文件/过滤的文件等信息,可以同时指定多个描述符文件,打包成不同的格式;
使用 descriptors,指定打包文件 src/assembly/src.xml,在该配置文件内指定打包操作。最终在pom.xml中的配置形如:
Maven build插件之Maven-assembly-plugin自定义打包_第1张图片

描述符文件元素
id

release

id 标识符,添加到生成文件名称的后缀符。如果指定 id 的话,目标文件则是 ${artifactId}-${id}.tar.gz
formats
maven-assembly-plugin 支持的打包格式有zip、tar、tar.gz (or tgz)、tar.bz2 (or tbz2)、jar、dir、war,可以同时指定多个打包格式

    tar.gz
   dir
dependencySets
用来定制工程依赖 jar 包的打包方式,核心元素如下表所示。
元素
类型
作用
outputDirectory
String
指定包依赖目录,该目录是相对于根目录
includes/include*
List
包含依赖
excludes/exclude*
List
排除依赖
    
        /lib
    
fileSets
管理一组文件的存放位置,核心元素如下表所示。
元素
类型
作用
outputDirectory
String
指定文件集合的输出目录,该目录是相对于根目录
includes/include*
List
包含文件
excludes/exclude*
List
排除文件
fileMode
String
指定文件属性,使用八进制表达,分别为(User)(Group)(Other)所属属性,默认为 0644
    
        
            bin/**
        
        0755
    
    
        
            /conf/**
            logs
        
    
files
可以指定目的文件名到指定目录,其他和 fileSets 相同,核心元素如下表所示。
元素
类型
作用
source
String
源文件,相对路径或绝对路径
outputDirectory
String
输出目录
destName
String
目标文件名
fileMode
String
设置文件 UNIX 属性
    
        README.txt
        /
    



==========================================================
******************* Maven-assembly-plugin配置示例 *********************
==========================================================

需求:目前公司有三个环境:测试、预发、生产,每个环境有各自不同的配置,在没使用Maven-assembly-plugin自定义打包之前,发到不同环境的项目需要手动修改配置,这样容易改漏,一改漏必然会导致严重的问题,所以我们引入Maven-assembly-plugin自定义打多个包,每个包使用不同环境的配置文件,发版时只需要将对应环境的包发上去解压即可。
java工程自定义打包示例
示例项目使用的是wenwo-platform-customer
根目录下存放的是测试环境的配置文件,pre对应预发配置文件,pro对应生产配置文件
1.建立不同环境的配置文件夹
在配置文件根目录下建立不同环境的配置文件夹,配置文件根目录为src/main/resources,在当前目录下建立pre,pro文件夹
Maven build插件之Maven-assembly-plugin自定义打包_第2张图片


2.复制差异文件并修改
将有不同环境下不同配置的文件复制到pre,pro目录下,并将配置文件修改为相应环境下的配置
Maven build插件之Maven-assembly-plugin自定义打包_第3张图片
这里仅给出其中一处配置修改的示例:
比如mongo连接配置,不同环境的连接端口不通,从左到右以此是测试、预发、生产的配置,它们分别位于src/main/resources、src/main/resources/pre、src/main/resources/pro目录下
Maven build插件之Maven-assembly-plugin自定义打包_第4张图片
3.建立assembly文件
在src/main目录下建立assembly文件夹,用来存放Assembly描述符文件
Maven build插件之Maven-assembly-plugin自定义打包_第5张图片
分别建立assembly.xml、assembly-pre.xml、assembly-pro.xml文件
assembly.xml文件内容如下:
Maven build插件之Maven-assembly-plugin自定义打包_第6张图片


assembly-pre.xml文件内容如下:
关键配置已在图中通过备注标记出来了
Maven build插件之Maven-assembly-plugin自定义打包_第7张图片

assembly-pro.xml的配置同理,这里就不贴出来了。这里主要通过备注解析一些关键配置,备注只会说明配置的主要功能,具体的详细说明及更多使用详见上面的“描述符文件元素”
4.pom.xml种配置assembly插件
在pom.xml的的标签下添加如下配置:
Maven build插件之Maven-assembly-plugin自定义打包_第8张图片

web工程自定义打包示例
web工程的自定义打包同上,这里仅有assembly描述文件不同,同时只需要建立assembly-pre.xml和assembly-pro.xml描述文件。因为执行maven build时会自动执行默认绑定的plugin,java项目会执行maven-jar-plugin打一个jar包,而web项目会执行maven-war-plugin打一个war包,所以测试的war包不需要额外打。
Maven build插件之Maven-assembly-plugin自定义打包_第9张图片注:因是公司项目,这里就不贴出源码了。因为csdn文章中不能上传附件,原文中是存在若干配置文件附件的,如有需要可前往我的有道云笔记查看比对,欢迎批评指正。

http://note.youdao.com/noteshare?id=56b99990bf89e88cae71123e0a7d2618&sub=5036BA7C812242658F733F03544A8609

你可能感兴趣的:(maven,build)