首页 > 代码库 > Maven坐标
Maven坐标
在平面几何中,用坐标(x, y)唯一确定一个点。在maven的世界里,用maven坐标来唯一确定一个构件。
maven坐标元素包括groupId, artifactId, version, packaging, classifier。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.7</version> <packaging>pom</packaging>
...... </project>
groupId:对应公司的一个实际项目
artifactId:实际项目中的子工程
version:版本号
packaging:打包方式,默认为jar,还有pom, maven-plugin, ejb, war, ear, rar, par等。
classifier:比如dom4j-1.6.1-sources.jar,dom4j-1.6.1-javadoc.jar这里的sources、javadoc就是一个classifier。再比如,一个包用不同的JDK版本编译,可以加上classifier,在dependency配置依赖时,可以指定具体的classifier的包(例子)。classifier是一个可选项,也不能在定义构件时指定,而是通过其它插件额外生成的附属构件。之所以被作为坐标的一部分,我想就是因为dependency时候有时需要指定。
构件的文件名是与坐标相对应的,一般规则为 artifactId-version[-classifier].packaging,[-classifier是可选的]。
个人认为最佳实践:groupId是artifactId的前缀,artifactId是package的前缀。比如,groupId是com.huawei.soa,artifactId是com.huawei.soa.precompile.meta,class是com.huawei.soa.precompile.meta.bs.BusinessServiceUtils,这样的话,看到class能知道在哪个包里,看到jar能知道属于哪个groupId,方便追根溯源。
Maven坐标