4 Maven-坐标

来源:互联网 发布:java 选择语句 编辑:程序博客网 时间:2024/04/29 23:49

1.Maven-简介   2.Maven-安装和配置   3.Maven-POM文件说明   4.Maven-坐标   5.Maven-依赖详解  6.Maven-仓库  7.Maven-生命周期和插件  8.Maven-聚合   9.Maven-继承和反应堆 10.Maven-使用NEXUS创建私服  11.Mavne-配置从NEXUS下载构件和为项目配置独立仓库   12.Maven-使用Hudson进行持续集成及系统配置  13.Maven-创建Hudson任务  14.Maven-Hudson监视任务、用户管理、工作目录


广义:

Maven定义了一组规则:世界上任何一个构建都可以用Maven坐标唯一标识,Maven坐标的元素包括groupId、artifactId、version、packaging、classifier。只要我们提供正确的坐标元素,Maven就能找到对应的构件。


4.1 坐标详解

Maven坐标为各种构建引入了秩序,任何一个构件都必须明确定义自己的坐标,而一组Maven坐标是通过一些元素定义的。

如下图:



groupId:定义当前Maven项目隶属的实际项目。


首先,Maven项目和实际项目不一定一对一的关系。比如SperingFramework这一实际项目,其对应的Maven项目会有很多,如 spring-core、spring-context等。这是由于Mavne中模块的概念,因此,一个实际项目往往会被划分成很多模块。

其次,groupId不应该对应项目隶属的组织或公司。原因很简单,一个组织下会有很多实际的项目,如果groupId只定义到组织级别,而后面我们会看到,artifactId只能定义Maven项目(模块),那么实际项目这个层次将难以定义。

最后,groupId的表示方式与Java包名的表示方式类似,通常与域名反方向一一对应。


artifactId:该元素定义实际项目中一个Maven项目(模块),推荐的做法是使用实际项目名称作为artifactId的前缀。

version:该元素定义Maven项目当前所处的版本。需要注意的是,Maven定义了一套完整的版本规范,以及快照(SNAPSHOT)的概念。

packaging:该元素定义Maven项目的打包方式。


首先,打包方式通常与所生成的构件的文件扩展名称对应。

其次,打包方式会影响到构件的生命周期,比如jar打包和war打包会使用不同的命令。
最后,Maven会使用默认值 jar

classifier:该元素用来构建输出的一些附属构建。注意,不能直接定义项目的classifier,因为附属构件不是项目直接默认生成,而是由附加的插件帮助生成的。

总结:

上述5个元素中groupId、artifactId、version是必须定义的,packaging是可选的(默认jar),而classifier是不能直接定义的。
同时,项目构件的文件名与坐标想对应的,一般的规则为 artifactId-version [-classifier].packaging,[-classifier]表示可选。
这里还需要强调一点是,packaging并非一定与构件扩展名对应,比如 packaging为 maven-plugin的扩展名为jar。此外Maven仓库的布局也是基于Maven坐标的。
0 0