maven坐标详解

1、groupId:定义当前Maven项目隶属的实际项目。
     1)、我们要知道,Maven项目和实际项目不一定是一对一的关系。比如SpringFrame这一实际项目,其对应的Maven项目会有很多,如spring-core、spring-context、spring-aop等。Maven中有一个很重要的概念:模块,因此一个实际项目往往会被划分成很多模块。
     2)、groupId不应该对应项目隶属的组织或公司,原因很简单,一个组织下会有很多实际项目,如果groupId只定义到组织级别,而后面我们会看到,artifactId只能定义到Maven项目(模块),那么实际项目这个层将难以定义。
     3)、groupId的表示方式与Java包名的表示方式类似,通常与域名反向一一对应。如:groupId为 com.vipshop.pms com.vipshop 表示vip公司,pms表示PMS营销系统这一实际项目,该groupId与域名pms.vipshop.com对应。

2、artifactId:定义实际项目中的一个Maven项目(模块),一般使用实际项目名称作为artifactId的前缀。这样做的好处就是方便寻找实际控件。
     以pms-indexer-4.2.2.jar为例,使用实际项目名称作为前缀之后,就能方便的从一个lib文件夹中找到某个项目的一组构建。
     考虑有这样五个项目,每个项目都有一个core模块,如果没有前缀,我们就会看到很多core-1.2.jar这样的文件,加上实际项目名前缀之后,就能很容易的区分是foo-core-1.2jar还是bar-core-1.2.jar。

3、version
     定义Mave项目当前所处的版本。

4、packaging:定义Maven项目的打包方式。不定义packaging的时候,Maven会使用默认值jar。

5、classifier:帮助定义构建输出的一些附属构件。
     附属构件与主构件对应,如上例中的主构件是pms-indexer-4.2.2.jar,该项目可能还会通过使用一些插件生成如pms-indexer-4.2.2-javadoc.jar,pms-indexer-4.2.2-sources.jar这样一些附属构件,其包含了Java文档和源代码。这时候,javadoc和sources就是这两个附属构件的classifier。

介绍了pom.xml文件的五个元素,其中,groupId / artifactId / version 是必须定义的,packaging是可选的(默认为jar),而classifier是不能直接定义的。

你可能感兴趣的:(artifactid,groupid,Packaging,maven坐标,pom.xml文件)