普通的maven打包是打包成jar或者war包。如果想打包成zip、tar.gz等格式的时候,就要使用maven-assembly这个插件了。最初认识这个插件的时候,觉得它和resource插件差不多。确实有相似的地方,resource控制的是项目生成到target目录的情况。而assembly这个插件可以控制各阶段怎么打包,可以在maven生成target之后,控制把什么东西打包进assembly最终生成的包中,甚至可以把target中生成的jar也打包进去。废话不多说了,首先看怎么用:
1、首先把<build>中<plugins>标签内添加assembly插件:

<build>……<plugins>……<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>2.4</version><configuration><encoding>UTF-8</encoding><descriptors><descriptor>src/main/assembly/package.xml</descriptor></descriptors><outputDirectory>c:\\</outputDirectory></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin></plugins>
</build>

这是我项目中的一个例子。<descriptor>标签里的文件后面详细讲讲,主要是配置assembly打包相关目录、文件、依赖包等等的路径及对应输出的问题。<outputDirectory>标签表示打包生成的文件输出路径。我把它放在c盘主要是为了方便点,各位可以按需放置。<execution>标签中的<id>名字可以随便起,但是后面<descriptor>的文件里的<id>要和这里的id对应。

2、配置<descriptor>对应的文件:

<?xml version='1.0' encoding='UTF-8'?>
<assemblyxmlns="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>make-assembly</id><formats><format>zip</format></formats><includeBaseDirectory>true</includeBaseDirectory><fileSets><fileSet><directory>${project.build.directory}/classes</directory><outputDirectory>/class</outputDirectory> </fileSet><fileSet><directory>src/main/resources</directory><outputDirectory>/conf</outputDirectory></fileSet><fileSet><directory>src/webapp</directory><outputDirectory>src/webapp</outputDirectory></fileSet><fileSet><directory>bin</directory><outputDirectory>/bin</outputDirectory></fileSet></fileSets><dependencySets><dependencySet><outputDirectory>lib</outputDirectory><scope>runtime</scope></dependencySet></dependencySets>
</assembly>

这里的<id>就是和前面<execution>里的<id>对应的。<includeBaseDirectory>这个表示最终打包文件最外层是否要加一个包装的目录,读者可以试试改成false就体会到区别了。<fileSet>就是要把什么文件打包到什么目录下,例如我这里就把target中的classes全部打包到最终的/class目录下,把resources目录里的打包进conf里面。<dependencySets>则会把相关的依赖包进行打包。

这篇文章只是举一个简单的速成例子。maven-assembly还有很多细节的控制,例如可以有多个xml配置,也可以不配置xml直接使用简单几种配置方式,还可以控制打包哪些文件,排除哪些文件等等,这些请读者自行百度,我就没必要再搬运过来了。

maven-assembly-plugin使用的心得相关推荐

  1. Maven Assembly Plugin - 如何将Maven工程打成一个可执行jar包

    参考自: http://blog.csdn.net/symgdwyh/article/details/6081532 Maven Assembly Plugin http://maven.apache ...

  2. maven assembly plugin使用

    使用场景 在使用maven来管理项目时,项目除了web项目,还有可能为控制台程序,一般用于开发一些后台服务的程序.最近在工作中也遇到了这种场景,使用quartz开发一个任务调度程序.程序中依赖很多ja ...

  3. 使用Maven Assembly plugin将依赖打包进jar

    一个Eclipse的工程,在pom中配置了若干依赖,需要将pom中所有的依赖全部打包进一个jar包中,可以选择的方案有maven-assembly-plugin和fatjar.以前采用fatjar进行 ...

  4. Maven Assembly插件介绍

    你是否想要创建一个包含脚本.配置文件以及所有运行时所依赖的元素(jar)Assembly插件能帮你构建一个完整的发布包. Assembly插件会生成 "assemblies", 此 ...

  5. Spring Boot 使用 Maven assembly 插件打包

    文章目录 1 摘要 2 Maven 核心依赖与配置 2.1 pom.xml 配置 2.2 assembly 配置信息 3 启动与停止脚本 3.1 启动脚本 3.2 停止脚本 4 推荐参考资料 5 Gi ...

  6. Maven assembly简谈

    什么是Assembly? "assembly"是把一组文件.目录.依赖元素组装成一个归档文件. 比如, 假设一个 Maven project定义了一个JAR artifact,它包 ...

  7. maven assembly打包插件详解

    定义 来自官方的定义: Maven Assembly Plugin relies on the provided assembly descriptors to dictate its executi ...

  8. Maven自定义打包插件Assembly Plugin简单使用

    使用Assembly Plugin实现自定义打包 1.修改pom.xml <!-- 编译时自动打包,规则见distribution.xml文件--> <build><pl ...

  9. assembly plugin实现自定义打包

    http://skydream.iteye.com/blog/437937 在上一篇文章中,讨论到在对maven的机制不熟悉的情况下,为了实现自己需要的打包格式而使用maven ant task以ma ...

  10. maven assembly打包zip报错 You must set at least one file.

    文章目录 maven assembly打包Error creating assembly archive pack: You must set at least one file. maven ass ...

最新文章

  1. 数据库---mysql内置功能
  2. linux重新编译mysql_linux下编译安装mysql++ | 学步园
  3. SqlHelper简单实现(通过Expression和反射)2.特性和实体设计
  4. linux 查看文件夹大小 du命令
  5. java 中parse_Java中parse()和valueOf(),toString()的区别?
  6. Win10最详细tensorflow-GPU环境的安装(安装anaconda、CUDA、CUDANN)
  7. CURL模拟访问网页
  8. Caffe傻瓜系列(1):数据层及参数
  9. VS2012配置FreeImage
  10. 离散求边缘密度_密度梯度理论简介——半导体器件仿真
  11. word2vec模型
  12. cocos creator--DragonBones 骨骼动画入门
  13. YTU OJ 2476 Problem B C++习题 继承与组合
  14. 敏捷开发产品管理系列之四:新产品研发
  15. 从0开始学大数据-数据仓库建模
  16. 无人机巡检技术要点解读,无人机巡检方案实现
  17. MPEG音频编码三十年
  18. vscode在html看到图片的插件_自从用了这款PPT插件,我才知道什么叫做高效办公!...
  19. how to trouble shoot thread hangs
  20. java编写车类_用Java程序创建一个汽车接口,接口中要定义汽车应有的属性和行为,随后编写多个汽车接口的实现类,...

热门文章

  1. 红旗Linux桌面4.1文本安放历程图解(一)
  2. 工作手记之工作点滴积累之Javascript方法篇
  3. 百度无人驾驶课程——无人驾驶
  4. Qt-网易云音乐界面实现-1 窗口隐藏拖拽移动,自定义标题栏
  5. 将.html转换成.jsp,如何将html页改成jsp
  6. mysql数据库如何做缓存_MySql数据库缓存
  7. python中声明变量注意事项_我们如何在Python中声明变量?
  8. springboot自带定时任务@Sheduled使用FAQ
  9. 【李宏毅机器学习课程笔记】深度强化学习(五)—— Sparse Reward
  10. StreamExplorer: A Multi-Stage System for Visually Exploring Events in Social Streams