gpt4 book ai didi

maven - 为什么 Apache Commons 库的 groupId 不一致,具体取决于项目?

转载 作者:行者123 更新时间:2023-12-04 14:26:10 26 4
gpt4 key购买 nike

Apache Commons 是一组许多不同的库。在 Maven Central Repository 上,它们有两种不同的 groupIds 命名约定,具体取决于项目,例如

  • Commons Lang、Commons Compress、Commons Weaver - 'org.apache.commons'
  • Commons CLI、Commons IO - 'commons-[library_name]'

  • 它们之间有什么区别?

    最佳答案

    commons-[library_name]命名约定是较旧的遗留约定。 org.apache.commons - 样式名称遵循 current operating convention基于域名的 groupIds。在公约建立后启动的所有 Apache 项目都有一个形式为 org.apache.* 的 groupId .在公约成立之前启动的一些项目更改了它们的 groupId,而其他项目则没有。

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

    但是很多项目已经不遵守约定了,changing the groupId is not as trivial as it sounds .主要原因是,如果旧的和新的 groupId 都是特定项目的依赖项,那么这两个 Artifact 都将被包含在内,然后您会遇到不同的 Artifact 提供完全相同的类的情况,这是类加载的噩梦。

    一些项目通过同时更改包名称和 groupId 来切换到新约定,例如 Commons Lang did .然而,更改包名通常被认为是非常具有破坏性的,因此 Commons Lang 仅在不兼容的 API 更改时才这样做。其他项目,如 Commons IO,有一些 discussionsback-and-forth关于它,但最终没有考虑进行转换,因为旧式名称无论如何都不会真正伤害任何人。

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

    关于maven - 为什么 Apache Commons 库的 groupId 不一致,具体取决于项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32184114/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com