一. Assembly 是什么意思?

二. maven-assembly-plugin是什么?

它是maven中针对打包任务而提供的标准插件。

三. maven-assembly-plugin插件的作用?

  摘自官网:http://maven.apache.org/plugins/maven-assembly-plugin/

  英文原文:The Assembly Plugin for Maven is primarily intended to allow users to aggregate the project output along with its dependencies,

                    modules, site documentation, and other files into a single distributable archive.

  中文翻译:Assembly 插件的主要作用是,允许用户将项目输出与它的依赖项、模块、站点文档、和其他文件一起组装成一个可分发的归档文件。

       (翻译不一定准确,以英文为准)

四.maven-assembly-plugin插件在maven项目中如何使用(即使用步骤)?

  1.  需要指定一个Assembly描述符文件。该文件指定了打包格式,包含的文件/过滤的文件等信息,可以同时指定多个描述符文件,打包成不同的格式。

  2.  在Maven工程的pom.xml文件里配置maven-assembly-plugin插件,引入Assembly描述符文件。

五. maven项目中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 的话(这里指定的是项目的版本),目标文件则是 ${artifactId}-${id}.jar。【如terminal-dispatch-5.0.0.0.jar】 -->
<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/script/linux/bin</directory> <!-- 指定归档文件(要打的jar包)要包含的目录(下的文件及文件夹) -->
<outputDirectory>bin</outputDirectory> <!-- 指定要将当前目录(<directory>标签中的目录放在归档文件(要打的jar包)bin目录下) -->
<includes>
<include>terminal-dispatch</include> <!-- 精确控制要包含的文件,<exclude>用于精确控制要排除的文件 -->
<include>server</include>
</includes>
<fileMode>0755</fileMode> <!-- 设置文件 UNIX 属性,是一种读写权限 -->
</fileSet>
<fileSet>
<directory>src/main/resources</directory>
<outputDirectory>conf</outputDirectory>
<includes>
<include>config.properties</include>
<include>logback.xml</include>
</includes>
<fileMode>0644</fileMode>
</fileSet>
<fileSet>
<directory>src/main/script/conf</directory>
<outputDirectory>conf</outputDirectory>
<includes>
<include>wrapper.conf</include>
</includes>
<fileMode>0644</fileMode>
</fileSet>
<fileSet>
<directory>src/main/script/linux/lib</directory>
<outputDirectory>lib</outputDirectory>
<includes>
<include>libwrapper.so</include>
<include>wrapper.jar</include>
</includes>
<fileMode>0755</fileMode>
</fileSet>
</fileSets> </assembly>

  1.  <includeBaseDirectory>true</includeBaseDirectory>标签作用?

    指定打的包是否包含打包层目录,比如finalName是terminal-dispatch,当值为true,所有文件被放在包内的terminal-dispatch目录下,否则直接放在包的根目录下,

  如下图所示:

  2. <fileMode>0755</fileMode>标签作用?

    设置文件的unix属性,好像是一种读写权限的设定,linux的内容,我没有深究,不是特别懂,暂时不多说。

序号 取值 意义
1 compile 缺省值,适用于所有阶段,会随着项目一起发布
2 provided 类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar
3 runtime 只在运行时使用,如JDBC驱动,适用运行和测试阶段
4 test 只在测试时使用,用于编译和运行测试代码。不会随项目发布
5 system 类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它

六. maven中的pom.xml配置(引入assembly描述符文件)

<build>
<plugins>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-assembly-plugin</artifactId>
      <version>2.4</version>
        <executions>
          <execution> <!--执行器 mvn assembly:assembly-->
            <id>make-zip</id> <!--名字任意 -->
            <phase>package</phase> <!-- 绑定到package生命周期阶段上 -->
            <goals>
              <goal>single</goal> <!-- 该打包任务只运行一次 -->
            </goals>
            <configuration>
              <descriptors
                <descriptor>src/main/script/assembly.xml</descriptor>
              </descriptors>
          </configuration>
        </execution>
      </executions>
    </plugin>
<plugins>
</build>

maven-assembly-plugin插件的使用方法的更多相关文章

  1. 记录一次maven打包时将test目录下的类打包到jar中,Maven Assembly Plugin的使用

    今天有人问我打包后找不到主类,运行的类写在test中.按照常规,test目录下的文件不会打包到jar包中.(但是我测试一个springboot工程就可以,这里之后再研究) 具体解决如下 第一步:在po ...

  2. maven assembly plugin使用

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

  3. maven release plugin插件

    1.打包版本区别 SNAPSHOT 快照版本(开发阶段,不稳定,容易出现bug)RELEASE 正式版本(外部依赖使用阶段,稳定,很少出现bug)Tag :标记每次代码提交的版本(比较稳定,类似分支) ...

  4. Maven版本管理-Maven Release Plugin插件

    一.什么是版本管理 首先,这里说的版本管理(version management)不是指版本控制(version control),但是本文假设你拥有基本的版本控制的知识,了解subversion的基 ...

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

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

  6. Maven Assembly插件介绍

    转自:http://blueram.iteye.com/blog/1684070 已经写得挺好的,就不用重写了. 你是否想要创建一个包含脚本.配置文件以及所有运行时所依赖的元素(jar)Assembl ...

  7. maven assembly 配置详解

    Maven Assembly插件介绍 博客分类: 项目构建   你是否想要创建一个包含脚本.配置文件以及所有运行时所依赖的元素(jar)Assembly插件能帮你构建一个完整的发布包. Assembl ...

  8. Maven学习总结(27)——Maven自定义打包插件maven-assembly-plugin详解

    Assembly插件会生成 "assemblies", 此特性等同于的Maven 1 distribution plug-in..该插件不仅支持创建二进制归档文件,也支持创建源码归 ...

  9. Jenkins安装maven integration plugin失败解决方法

    最近装了一个jenkins准备搞一个自动化测试的持续集成,但是在安装maven integration这个插件时报错,试了几次都是失败! 错误原因如下: javadoc安装失败: java.io.IO ...

  10. 转:JMeter监控内存及CPU ——plugin插件监控被测系统资源方法

    JMeter监控内存及CPU ——plugin插件监控被测系统资源方法 jmeter中也可以监控服务器的CPU和内存使用情况,但是需要安装一些插件还需要在被监测服务器上开启服务. 1.需要的插件准备 ...

随机推荐

  1. php 抽象类和接口类

    PHP中抽象类和接口类都是特殊类,通常配合面向对象的多态性一起使用. 相同: ①两者都是抽象类,都不能实例化. ②只有接口类的实现类和抽象类的子类实现了 已经声明的 抽象方法才能被实例化. 不同: ① ...

  2. 进入docker登录psql数据库对特定表进行操作

    查看docker镜像 docker ps 运行镜像的脚本命令 docker exec -it 08 bash # 选择id为08开头的镜像运行bash 登录数据库 (1)直接登录 执行命令:psql ...

  3. 【转载】Centos7 中使用Supervisor守护进程

    配置supervisor实现进程守护 1.安装supervisor yum install Supervisor   2.启动服务 supervisord -c /etc/supervisord.co ...

  4. jQuery实现跨域请求实例

    首先准备两个项目做测试(jsonp1,jsonp2) 一:在jsonp1中做一个用于测试的链接 def ajax(request): callbacks = request.GET.get(" ...

  5. Java与算法之(8) - 堆排序

    堆是一种特殊的完全二叉树,其特点是所有父节点都比子节点要小,或者所有父节点都比字节点要大.前一种称为最小堆,后一种称为最大堆. 比如下面这两个: 那么这个特性有什么作用?既然题目是堆排序,那么肯定能用 ...

  6. POJ 3154 Graveyard【多解,数论,贪心】

    Graveyard Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 1707   Accepted: 860   Specia ...

  7. Codeforces Round #412 (rated, Div. 2, base on VK Cup 2017 Round 3)(A.B.C,3道暴力题,C可二分求解)

    A. Is it rated? time limit per test:2 seconds memory limit per test:256 megabytes input:standard inp ...

  8. Java的语言特点详解

    1)简单性:java从C++简化而来,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的.java还剔除了C++操作符过载和指针操作. 2)面向对象:java是一个面向对象的语 ...

  9. xshell连接虚拟机Ubuntu问题

    近期为了学习数据库的操作,准备在虚拟机中搭建环境以便操作(为什么在虚拟机搭建学习环境?),系统刚装好第一步就被阻止了. 总是会提示Could not connect to.原因是虚拟机没有安装ssh服 ...

  10. leak finder

    介绍 leak finder 是google开源团队发布了一个新的可以帮助web应用程序开发者在他们的JavaScript程序中找出内存泄露问题的工具: http://feedproxy.google ...