12.2.3. 套件作为依赖

当你将生成套件作为你标准构建过程的一部分的时候,这些套件归档会被附着到你项目的主构件上。意思是,当它们会随着主构件的安装和部署一起被安装或部署,而且它们会以差不多相同的方式被解析。每个套件构件会被给予同样的基本坐标(groupId, artifactId, 和 version)。但是,由于这些构件是附件,在Maven中意思是,它们是基于主项目构建的某些方面派生出来的。这里是一些例子,source套件包含了项目的原始输入,jar-with-dependencies套件包含了项目的类及依赖。由于这种派生的性质,附属构件就能精确的规避一个项目,或一个构件的Maven需求。

由于套件(通常)是附属构件,除了标准的构件坐标,它们还必须拥有一个分类器来和主构件加以区分。默认情况下,该分类器就是套件描述符的定义符。当如上例使用内置的套件描述符的时候,套件描述符的定义符和descriptorRef中对应使用的定义符是一样的。

在你伴随着项目的主构件部署了一个套件后,如何才能在其它项目中使用这个套件呢?答案很简单。回忆一下Section 3.5.3, “Maven坐标 (Coordinates)”Section 9.5.1, “坐标详解”中讨论的项目依赖,一个项目依赖于另外一个项目的时候,它使用项目坐标四个元素的组合:groupId, artifactId, version, 和 packaging。在Section 11.7.3, “平台分类器”中,同一个项目的构件有针对多个平台的变种,该项目设置了值为winlinuxclassifier元素,以为目标平台选择合适的依赖构件。使用项目的坐标加上套件被安装或部署时的分类器,我们就可以将套件设为依赖。如果套件不是一个JAR归档,我们还需要声明其类型。