- 12.1. 简介
- 12.2. Assembly基础
- 12.3. 套件描述符概述
- 12.4. 套件描述符
- 12.5. 控制一个套件的内容
-
- 12.5.1.
Files
元素 - 12.5.2.
FileSets
元素 - 12.5.3.
fileSets的默认排除模式
- 12.5.4.
dependencySets
元素 -
- 12.5.4.1. 自定义依赖输出目录
- 12.5.4.2. 依赖输出位置的属性插值
- 12.5.4.3. Including and Excluding Dependencies by Scope
- 12.5.4.4. Fine Tuning: Dependency Includes and Excludes
- 12.5.4.5. Transitive Dependencies, Project Attachments, and Project Artifacts
- 12.5.4.6. Advanced Unpacking Options
- 12.5.4.7. Summarizing Dependency Sets
- 12.5.5.
moduleSets
部分 - 12.5.6. Repositories Section
- 12.5.7. Managing the Assembly’s Root Directory
- 12.5.8.
componentDescriptors
andcontainerDescriptorHandlers
- 12.5.1.
- 12.6. Best Practices
- 12.7. Summary
Maven提供了可以用来创建大多数常见归档类型的插件,这些归档类型中的大部分可以由其它项目作为依赖使用。这样的插件有JAR, WAR, EJB, 以及 EAR插件。如在Chapter 10, 构建生命周期中讨论的那样,这些插件对应于不同的项目打包类型,每种类型的构建过程都有微小的差别。虽然Maven有插件及自定义生命周期来支持标准的打包类型,但还是有些时候你需要创建一个自定义格式的归档文件或目录。这样的归档叫做Maven套件(Assembly)。
在很多情况下你需要为你的项目构建自定义的归档。最常见的可能就是项目分发。单词“分发(distribution)”意思是,根据项目将会如何被使用,为不同的人(或项目)提供不同的东西。本质上来说,这些归档是为用户提供一种便捷的方式来安装,否则用户就必须使用项目的发布版本。一些情况下,这可能是构建一个带有应用服务器(如Jetty)的web应用。还有一些情况,可能是包裹了项目API文档,源码,和已编译字节码的JAR文件。当你构建项目的最终分发包的时候,Maven套件就十分有用了。以Chapter 16, 仓库管理器中介绍的Nexus为例,它是一个大型的包含了很多模块Maven项目的产品,而你从Sonatype下载的最终归档就是一个Maven套件。
大多数情况下,Assembly插件十分适用于构建项目的分发包。然而,套件不一定就要是分发包;套件的目的是能让用户灵活的构建任意类型的自定义归档文件。本质上说,套件是为了弥补由项目打包类型所提供的标准归档格式的不足。当然,你可以完全写一个Maven插件来帮助生成你的自定义归档格式,同时创建生命周期映射和构件处理配置来告诉Maven如何部署。但大部分情况下,有了Assembly插件,这就完全没有必要了。该插件为创建自定义归档格式提供了普遍的支持,你不需要花很多时间来编写Maven插件代码。