问题
示例代码: Maven - Same Class Name Same GroupId Different ArtifactId
Utilities
。Utilities
有一个静态方法public static String getDescription()
,它返回一个string
,其中包含当前项目的工件坐标以及项目名称。Utilities.getDescription()
调用生成的String
以查看是否会在某处发生错误,并了解如何解决错误。已编辑:跟进问题
答案 0 :(得分:2)
解决/避免此问题的最佳做法是什么?
我们在模块中包含groupId和artifactId作为基础包。这样就不可能在两个模块中具有相同的类,因为包将是不同的。
e.g。
<groupId>net.openhft</groupId>
<artifactId>chronicle-bytes</artifactId>
包含
下的所有内容package net.openhft.chronicle.bytes;
此外,如果你知道一个类的包,你就知道它必须在哪个JAR中。
如果你有两个JAR需要,我建议创建一个公共模块,它们都依赖。
注意:通常的做法是使用您的公司域名(以及名义部门)作为您的包的基础。 Maven建议您使用您的域名作为groupId,如果您发布到Maven Central,现在这是一项要求。上述策略支持两种建议。
为什么maven的artifactId坐标会影响存储库中maven工件的唯一性,而不是java代码中的maven工件的唯一性?
Maven没有注意到JAR的内容。
答案 1 :(得分:2)
@Peter跟随您的主导,建议避免此问题的最佳做法。
要将两个类与不同的JAR区分开来,请将package创建为groupId.artifactId。
例如,我会创建一个项目TestDummy,我希望JAR的名称是TestDummy-1.1,然后我的包就像。
com.github.dibyaranjan.testdummy
该课程看起来像 - com.github.dibyaranjan.testdummy.MyClass
参考访问:https://maven.apache.org/guides/mini/guide-naming-conventions.html