文档章节

使用assembly plugin实现自定义打包

M
 MackCC_Sun
发布于 2015/10/17 12:18
字数 829
阅读 1342
收藏 1
  在上一篇文章中,讨论到在对maven的机制不熟悉的情况下,为了实现自己需要的打包格式而使用maven ant task以maven + ant的方式来实现非标准打包,而现在要介绍的是maven中针对打包任务而提供的标准插件:assembly plugin。

    依然以上文(初学maven(4)-使用maven ant task实现非标准打包)的项目为例,要打包的程序如下:

    demo1
    |____lib
    |_____demo1.jar
    |_____*****.jar
    |_____*****.jar
    |____config
    |_____*****.properties
    |_____*****.xml
    |____log
    |_____*****.log
    |____run.bat
    |____run.sh

    类似的建立java项目,文件结构如下:

    demo1
    |____src/main/java
    |____src/main/config
    |____src/main/bin
    |____src/main/resources
    |____src/main/assemble
    |____src/test/java
    |____src/test/resources
    |____target
    |____pom.xml

    除开增加了src/main/assemble目录和没有ant的build文件外,其他内容完全一样:其中src/main/java下放java代 码;src/main/resources下放一个*.properties文件,这个资源文件是打包到 jar中,内容打包之后不需要改变的。src/main/config下放一个标准的log4j.xml,这个是有在安装运行前临时修改的需要的。src /main/bin下放置可执行文件。

    assembly plugin的使用方式比较简单,主要有:

1. 修改pom.xml

    pom.xml中设置如下:
   
< build >
        
< plugins >
            
< plugin >
                
< artifactId > maven-assembly-plugin </ artifactId >
                
< configuration >
                    
<!--  not append assembly id in release file name  -->
                    
< appendAssemblyId > false </ appendAssemblyId >
                    
< descriptors >
                        
< descriptor > src/main/assemble/package.xml </ descriptor >
                    
</ descriptors >
                
</ configuration >
                
< executions >
                    
< execution >
                        
< id > make-assembly </ id >
                        
< phase > package </ phase >
                        
< goals >
                           
< goal > single </ goal >
                        
</ goals >
                    
</ execution >
                
</ executions >
            
</ plugin >
        
</ plugins >
    
</ build >

    其中<artifactId>maven-assembly-plugin</artifactId>的maven-assembly-plugin是这个插件的标准命名,在maven2.0.*中带的默认版本是

    appendAssemblyId属性控制是否在生成的打包文件的文件名中包含assembly id。
   
    descriptor属性指定maven-assembly-plugin的配置文件,当然我设置的是src/main/assemble/package.xml.容许使用多个,功能强大当然用法也复杂,对于简单情况一个足矣。

    execution的设置是为了将maven-assembly-plugin继承到标准的maven打包过程中,这样在运行maven-package时就会执行maven-assembly-plugin的操作,从而实现我们需要的自定义打包。
2. assemble descriptor file

    我的src/main/assemble/package.xml内容如下:

< assembly  xmlns ="http://maven.apache.org/POM/4.0.0"  xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/assembly-1.0.0.xsd" >
    
< id > package </ id >
    
< formats >
        
< format > zip </ format >
    
</ formats >
    
< includeBaseDirectory > true </ includeBaseDirectory >
    
< fileSets >
        
< fileSet >
            
< directory > src/main/bin </ directory >
            
< outputDirectory > / </ outputDirectory >
        
</ fileSet >
        
< fileSet >
            
< directory > src/main/config </ directory >
            
< outputDirectory > config </ outputDirectory >
        
</ fileSet >
    
</ fileSets >
    
< dependencySets >
        
< dependencySet >
            
< outputDirectory > lib </ outputDirectory >
            
< scope > runtime </ scope >
        
</ dependencySet >
    
</ dependencySets >
</ assembly >

   
    详细的语法不介绍了,请参考官方指南,有非常详尽的说明: Assembly Descriptor Format reference

    简单解释一下:

    1) format
    format=zip设置打包的最终文件格式为zip.
    支持的其他格式还有gz,tar,tar.gz,tar.bz2。

    2)  fileset
   
     < fileSet >
            
< directory > src/main/bin </ directory >
            
< outputDirectory > / </ outputDirectory >
    
</ fileSet >  
 
    将src/main/bin目录下的文件打包到根目录(/)下.

< fileSet >
            
< directory > src/main/config </ directory >
            
< outputDirectory > config </ outputDirectory >
</ fileSet >

    将src/main/config目录下的文件打包到config下.

    3) dependencySets

     < dependencySet >
            
< outputDirectory > lib </ outputDirectory >
            
< scope > runtime </ scope >
   
</ dependencySet >

    将scope为runtime的依赖包打包到lib目录下。


    总结一下,pom.xml中引入maven-assembly-plugin,然后assemble descriptor file按需设置,最后在eclipse中执行Run As -> Maven package,在target目录下就会出现***.zip文件,里面的格式和要求的完全一致。

    够简单明了吧?感觉比使用maven ant task要轻快不少,看来maven还是很强大的,继续学习......

本文转载自:http://www.blogjava.net/aoxj/archive/2009/01/16/251615.html

M
粉丝 4
博文 158
码字总数 29095
作品 0
朝阳
技术主管
私信 提问
DevOps进阶(九)使用assembly plugin实现自定义打包

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sunhuaqiang1/article/details/84821580 DevOps进阶(九)使用assembly plugin实现自定义打包 assembly plugi...

孙华强
2018/12/05
0
0
hive 学习系列四(用户自定义函数)

如果入参是简单的数据类型,直接继承UDF,实现一个或者多个evaluate 方法。 具体流程如下: 1,实现大写字符转换成小写字符的UDF 2,打包成jar 包。 建立maven 项目,使用maven 打包。 这里打...

unnunique
2018/06/12
0
0
Java开发之Maven多工程依赖项目

Java开发之Maven多工程依赖项目 前言 自定义Maven依赖中创建的父工程project-monitor实现,运用我们自定义的依赖包进行多工程依赖项目的开发。 下面以多可执行Jar包项目的开发为例,进行Mav...

kMacro的博客
2017/12/22
0
0
Java开发小技巧(三):Maven多工程依赖项目

Maven多工程依赖项目开发流程 前言 本篇文章基于Java开发小技巧(二):自定义Maven依赖中创建的父工程实现,运用我们自定义的依赖包进行多工程依赖项目的开发。 下面以多可执行Jar包项目的开...

kMacro
2017/12/22
0
0
atom-design(Vue.js移动端组件库)手势组件介绍

介绍 atom-design经过几个月的开发,以及这段时间的修复bug,对js,css压缩,按需引入处理等等的性能优化,现在已经逐渐完善.做这套UI考虑到很多性能的问题,以及如何让开发者更自由、更简单的...

Reming960227
05/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MainThreadSupport

MainThreadSupport EventBus 3.0 中的代码片段. org.greenrobot.eventbus.MainThreadSupport 定义一个接口,并给出默认实现类. 调用者可以在EventBus的构建者中替换该实现. public interface ...

马湖村第九后羿
28分钟前
2
0
指定要使用的形状来代替文字的显示

控制手机键盘弹出的功能只能在ios上实现,安卓是实现不了的,所以安卓只能使用type类型来控制键盘类型,例如你要弹出数字键盘就使用type="number",如果要弹出电话键盘就使用type="tel",但这...

前端老手
38分钟前
3
0
总结:Raft协议

一、Raft协议是什么? 分布式一致性算法。即解决分布式系统中各个副本数据一致性问题。 二、Raft的日志广播过程 发送日志到所有Followers(Raft中将非Leader节点称为Follower)。 Followers收...

浮躁的码农
45分钟前
3
0
Flask-admin Model View字段介绍

Model View字段介绍 can_create = True 是否可以创建can_edit = True 是否可以编辑can_delete = True 是否可以删除list_template = 'admin/model/list.html' 修改显......

dillonxiao
今天
5
0
从AnnotationTransactionAspect开始rushSpring事务

0. Spring 事务 with LTW 0.1. Spring 事务 With LTW的原因: Pure Proxy-base mode有缺陷,其失效原因分析及使用方法及运行机制(LoadTimeWeaverBeanDefinitionParser和 AspectJWeavingEnable......

Aruforce
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部