GroupID和ArtifactID
在每次建立maven web项目的时候,选好web文件,到填写group Id与ArtifactId的时候就懵逼了,这篇文章,主要是关于怎么对group Id与ArtifactId方式,以解决困扰自己的长期问题
- GroupID 是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构
- ArtifactID是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。
1、基础知识必备
<groupId>com.yucong.commonmaven</groupId>
<artifactId>commonmaven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>common_maven</name>
- groupid:定义了项目属于哪个组,举个例子,如果你的公司是mycom,有一个项目为myapp,那么groupId就应该是com.mycom.myapp.
- artifacted :定义了当前maven项目在组中唯一的ID,比如,myapp-util,myapp-domain,myapp-web等
- version :指定了myapp项目的当前版本,SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本
- name :声明了一个对于用户更为友好的项目名称,不是必须的,推荐为每个pom声明name,以方便信息交流
2、何为mave坐标
maven的世界中拥有数量非常巨大的构件,也就是平时用的一些jar,war等文件。
maven定义了这样一组规则:
世界上任何一个构件都可以使用Maven坐标唯一标志,maven坐标的元素包括groupId, artifactId, version,package,classifier。
只要在pom.xml文件中配置好dependancy的groupId,artifact,verison,classifier,
maven就会从仓库中寻找相应的构件供我们使用。那么,"maven是从哪里下载构件的呢?"
答案很简单,maven内置了一个中央仓库的地址(http://repol.maven.org/maven2),该中央仓库包含了世界上大部分流行的开源项目构件,maven会在需要的时候去那里下
3、其他文件解释
- packaging【可选的,默认为jar】: 当不定义packaging时,maven会使用默认值jar。
- classifier: 该元素用来帮助定义构件输出的一些附属构件。
- 项目构件的文件名是坐标相对应的,一般的规则为:artifact-version.packing
以上参考资料:https://blog.csdn.net/zhangxingyu126/article/details/81013315
命名规则
在Java开发手册中,GroupID与ArtifactID被规到工程结构中的二方依赖库里的内容,现主要内容摘抄如下
定义GAV(GroupID、ArtifactID、Version)遵从以下原则
1、GroupID格式:com.{公司/BU}.业务线.[子业务线],最多四级
说明:{公司/BU},例如,alibaba/taobao/tmall/aliexpress等BU一级,子业务线可选
正例: com . taobao . jstorm 或 com.alibaba.dubbo.register
2、 ArtifactID 格式:产品线名-模块名。语义不重复不遗漏,先到中央仓库去查证一下
正例: dubbo - client / fastjson - api / jstorm - tool
3、Version命名方式:主版本号.次版本号.修订号
修订号 修订号:修复 bug ,没有修改方法签名的功能加强,保持 API 兼容性。
说明:注意:起始版本号必须为: 1.0.0 ,而不是 0.0.1 正式发布的类库必须先去中央仓库进行查证,使版本号有延续性,正式版本号不允许覆盖升级。如当前版本:1.3.3,那么下一个合理的版本号:1.3.4 或 1.4.0 或 2.0.0
结构显示
如图所示,我的groupId是:com.mycom.app,artifactId是app-util,项目名称显示的是去掉中间-的artifactId即apputil