很长一段时间以来,MySQL Connector/J 一直在 Maven 坐标组 ID 'mysql' 和工件 ID 'mysql-connector-java' 下发布。两者都没有完全合规,也没有得到官方批准。
虽然最初可以使用组 ID mysql,但现在很难获得使用单个单词组 ID 的批准。那些仍然拥有它们的人通常被认为是遗留项目。尽管 Maven 不强制执行此规则,但约定规定组 ID 应遵循 Java 的包名称规则,即,它应以属于拥有项目的组织的反向域名开头。对于 MySQL Connector/J,这意味着它应该一直是com.mysql。
另一个不幸的命名选择是mysql-connector-java用于工件 ID。如果只是将产品正式命名为“MySQL Connector/Java”而不是“MySQL Connector/J”,那就太好了。名称“connector-java”或“Connector/Java”,无论是否带有前面的单词“MySQL”,从未被 MySQL 组织视为正式名称。同样,Maven 并没有对工件的命名强制执行任何严格的规则,但我们认为我们应该将工件 ID 与产品名称对齐,因此mysql-connector-j会是一个更好的匹配。
话虽如此,从 MySQL 8.0.31 版本开始,可以在 maven 存储库目录/com/mysql/mysql-connector-j下找到 MySQL Connector/J 工件,组 ID为 com.mysql,工件 ID为 mysql-connector-j。因此,相应的 jar 文件也在所有可用的分发包中重命名为mysql-connector-jx.yzjar 。
这对您的项目有何影响?
依赖于 MySQL Connector/J 版本 8.0.31 及更高版本的项目必须将其 POM 依赖项设置更新为:
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.31</version>
(...)
</dependency>
对于有限数量的版本,MySQL Connector/J 开发团队将与新的一起维护旧的 Maven 坐标。不过,旧存储库将停止获取 jar 文件。相反,只有信息文件和重定位 POM 文件将在此存储库下发布,并且链接到旧 Maven 坐标的项目将由您选择的依赖关系解析工具自动重定向到新坐标。
为什么现在?
完全没有理由。但为什么不呢?事实上,现在没有公开可见的理由进行此更改。我们有机会微调了一些公司内部的发布流程,而这只是在路上。对用户的影响不容忽视,但最终我们只想做正确的事。
原文标题:MySQL Connector/J has new Maven Coordinates
原文作者:Filipe Silva
原文链接:https://blogs.oracle.com/mysql/post/mysql-connectorj-has-new-maven-coordinates




