Maven坐标
Maven是如何唯一标识一个构件的
1. Maven坐标
一个最简单的pom.xml示例:
Maven 要求一个项目对应的 groupId:artifactId:version 必须唯一。
- groupId: 通常用于唯一标识一个组织或项目。一般使用组织(项目)的反向域名作为 groupId ,如 Maven 核心构件对应的 groupId 都是 org.apache.maven 。这个并不是强制要求,如JUnit就使用 junit 作为其groupId。
- artifactId: 一个项目的名称。groupId和artifactId应该能够将一个项目和世界上的所有其它项目区分开。默认情况下,Maven生成的构件都会以 artifactId 开头。
- version: 指明项目的版本号。
- packaging: 项目的打包方式。打包方式通常会与构件的文件扩展名对应,如不指定,缺省值为jar。目前的可选值有: pom, jar, maven-plugin, ejb, war, ear, rar, par。Maven会根据不同的打包方式选用不同的命令对项目进行打包。 包含packaging的坐标格式为: groupId:artifactId:packaging:version
- classifier: 可以理解为附属构建的后缀,如源码包的classifier为 sources。包含classifier的坐标格式为: groupId:artifactId:packaging:classifier:version
Maven生成的构件文件名与坐标对应,格式: artifactId-version[-classifier].packaging 当将生成的构件存放在仓库中时,Maven会将构件保存在 $M2_REPO/groupId/artifactId/version 目录下。其中,groupId中的”.”会被替换成”/”。
以上面的pom.xml为例,Maven会生成一个名为 fht-library-common-1.0-SNAPSHOT.jar 的包,如果生成源码包,名字为 fht-library-common-1.0-SNAPSHOT-sources.jar。存放在 $M2_REPO/org/fanhongtao/fht-library-common/1.0-SNAPSHOT 目录下。
参考
声明: 本文采用 CC BY-NC-SA 3.0 协议进行授权,转载请注明出处。