maven坐标的元素包括groupId,artifactId,version,packaging,classifier。
- groupId:定义当前maven项目隶属的实际项目。比如,groupId为org.sonatype.nexus,org.sonatype表示sonatype公司建立的一个非盈利性组织,nexus表示Nexus这一实际项目,该groupId与域名nexus.sonatype.org对应。
- artifactId:该元素定义实际项目中的一个maven项目(模块),推荐的做法是使用实际项目名称作为artifactId的前缀。比如artifactId是nexus-indexer,使用了实际项目名nexus作为前缀,这样做的好处是方便寻找实际构件。
- version:该元素定义maven项目当前所处的版本。
- packaging:该元素定义maven项目的打包方式。
- classifier:该元素用来帮助定义构建输出的一些附属构件。
根元素project下的dependencies可以包含一个或者多个dependency元素,以声明一个或者多个项目依赖。每个依赖可以包含的元素有:
groupId,artifactId和version:依赖的基本坐标,对于任何一个依赖来说,基本坐标是最重要的,maven根据坐标才能找到需要的依赖。
type:依赖的类型,对应于项目坐标定义的packaging。大部分情况下,该元素不必声明,其默认值为jar。
scope:依赖的范围。
optional:标记依赖是否可选。
exclusions:用来排除传递性依赖。
scope(依赖范围)
- compile:编译依赖范围。如果没有指定,就会默认使用该依赖范围。使用此依赖范围的maven依赖,对于编译,测试,运行三种classpath都有效。
- test:测试依赖范围。只对于测试classpath有效。
- provided:已提供依赖范围。对于编译和测试classpath有效,但在运行时无效。
- runtime:运行时依赖范围。对于测试和运行classpath有效,但在编译主代码时无效。
- system:系统依赖范围。
- import:导入依赖范围。