Maven坐标详解
对于任何一个Maven项目,坐标是唯一标识,Maven坐标的元素包括groupId、artifactId、version、packaging和classifierMaven的规则是:世界上任何一个构建都可以使用Maven坐标作为唯一标识,也是通过唯一标识,找到对应的Maven构建。
以Maven私服Nexus的一个坐标定义为例
<groupId>org.sonatype.nexus</groupId>
<artifactId>nexus-indexer</artifactId>
<version>2.0.0</version>
<packaging>jar</packaging>
(1)groupId:定义当前Maven项目隶属的实际项目
groupID的标识方式与Java包名的表示方式类似,通常与域名反向一一对应
(2)artifactId:该元素定义实际项目中的一个Maven项目(模块),推荐的做法是使用实际项目名称作为artifactId的前缀
上例中的artifactId是nexus-indexer,使用了实际项目名Nexus作为前缀,这样做的好处是方便时再进行Jenkins任务的构建。
(3)version:该元素定义了Maven项目当前所处的版本。
(4)packaging:该元素定义Maven项目的打包方式
首先,打包方式通常与所生成构件的文件扩展名对应,上例中的packaging为jar,最终的文件名为nexus-indexer-2.0.0.jar
用war作为打包方式的Maven项目,最终生成的构建会有一个.war文件,不过这不是绝对的。
其次,打包方式会影响构建的生命周期,比如jar打包和war打包会使用不同的命令。
最后,当不定义packaging时,Maven会使用默认值jar。
(5)classifier:该元素用来帮助定义构件输出的一些附属构件
上述五个元素,groupId、artifacId、version是必须定义的,packaging是可选的(默认为jar),而calssifer是不能直接定义的
(注:内容来自兰洋《持续集成实践》一书)