A.4. 关于 Maven 工件和协调

在 Maven 构建系统中,基本构建块是一个 工件。构建后,工件的输出通常是一个存档,如 JAR 或 WAR 文件。

Maven 的一个关键方面是能够找到工件和管理它们之间的依赖关系。Maven 协调 是一组用于标识特定工件位置的值。基本协调有三个值,格式为:

groupId:artifactId:version

有时,Maven 通过 打包值或使用打包 值和 分类器 值增加一个基本的协调。Maven 协调可以具有以下形式之一:

groupId:artifactId:version
groupId:artifactId:packaging:version
groupId:artifactId:packaging:classifier:version

以下是值的描述:

groupdId
定义工件名称的范围。您通常使用所有或部分软件包名称作为组 ID。例如,org.fusesource.example
artifactId
定义相对于组 ID 的工件名称。
version
指定工件的版本。版本号最多可有四个部分: n.n.n.n,其中版本号的最后一部分可以包含非数字字符。例如,1.0-SNAPSHOT 的最后一部分是字母数字字符子字符串 0-SNAPSHOT
打包
定义构建项目时生成的打包实体。对于 OSGi 项目,打包是 捆绑包。默认值为 jar
classifier
可让您区分从同一 POM 构建但具有不同内容的工件。

工件的 POM 文件中的元素定义工件的组 ID、工件 ID、打包和版本,如下所示:

<project ... >
  ...
  <groupId>org.fusesource.example</groupId>
  <artifactId>bundle-demo</artifactId>
  <packaging>bundle</packaging>
  <version>1.0-SNAPSHOT</version>
  ...
</project>

要定义对上述工件的依赖项,您可以在 POM 文件中添加以下 dependencies 元素:

<project ... >
  ...
  <dependencies>
    <dependency>
      <groupId>org.fusesource.example</groupId>
      <artifactId>bundle-demo</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
  </dependencies>
  ...
</project>
注意

不需要在前面的依赖项中指定 bundle 软件包类型,因为捆绑包只是特定类型的 JAR 文件,jar 是默认的 Maven 软件包类型。但是,如果您需要在依赖项中明确指定打包类型,您可以使用 type 元素。