在 Maven 中,坐标是资源包的唯一标识,Maven 通过坐标在仓库中找到唯一的资源。
下面就是 javax.servlet-api-4.0.1.jar 的坐标:
javax.servlet
javax.servlet-api
4.0.1
provided
groupId:全球唯一标识符。资源所属组织的名称或者资源隶属的实际项目名称。资源其实本质也是一个项目,但是更多时候应该是一个大项目中的某个模块。通常情况下,一个项目往往会被划分为很多模块,比如 spring 是一个实际项目,隶属的模块会有很多,如 spring-core,spring-webmvc 等。
有点类似 Java 的包。
artifactId:构件/工件标识符。即资源名称,资源在一个项目中的模块名称,推荐的做法是使用实际项目名作为 artifactId 的前缀。比如:spring-bean,sping-webmvc 等。
有点类似 Java 的类名。
version:资源的版本
Maven 通过上述3个变量,即可唯一确定某个 jar 包。Maven通过对jar包进行PGP签名确保任何一个jar包一经发布就无法修改。修改已发布jar包的唯一方法是发布一个新版本。
因此,某个 jar 包一旦被Maven下载过,即可永久地安全缓存在本地。
注:只有以 -SNAPSHOT
结尾的版本号会被 Maven 视为开发版本,开发版本每次都会重复下载,这种SNAPSHOT 版本只能用于内部私有仓库,公开发布的版本不允许出现 SNAPSHOT。