首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么有不一致的groupIds (取决于项目)?

问为什么有不一致的groupIds (取决于项目)?
EN

Stack Overflow用户
提问于 2015-08-24 13:55:33
回答 1查看 561关注 0票数 7

Apache是一个由许多不同库组成的集合。在Maven中央存储库上,根据项目的不同,它们对groupIds有两种不同的命名约定。

  • Commons,Compress,Commons - 'org.apache.commons'
  • 对于Commons,Commons - 'commons-[library_name]'

他们之间有什么区别?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-25 05:25:33

commons-[library_name]命名约定是旧的遗留约定。org.apache.commons-style名称遵循基于域名的groupIds的现行运作公约。在建立约定之后开始的所有Apache项目都有一个表单groupId org.apache.*。一些在公约建立之前启动的项目改变了它们的groupIds,而其他项目则没有。

在Maven历史的早期,显然需要在Maven Central的所有项目中强制执行通用唯一的groupIds,以避免名称冲突。确保这一点的一个简单方法是建立一个约定,项目作者只能使用来自他们控制的域名的groupIds。因此,来自Apache组织的表单groupIds的org.apache.*。

然而,许多项目已经没有遵守约定,也没有遵守更改groupId并不像听起来那么简单。。主要原因是,如果旧的和新的groupIds都是特定项目的依赖项,那么这两个工件都将被包括在内,然后就会有不同的工件提供完全相同的类,这是类加载的噩梦。

一些项目通过与groupId一起更改包名,比如朗公,切换到了新的约定。然而,更改包名通常被认为是相当具有破坏性的,因此Commons只在不兼容的API更改的情况下进行了更改。其他项目,如Commons,对此也有一些讨论和往回走,但最终还是没能做出改变,因为旧的名字并没有真正伤害到任何人。

这就是为什么今天大多数Apache项目都是表单org.apache.*的原因,但是仍然有一些不是。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32184114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档