gpt4 book ai didi

java - 应用 Maven groupId 命名约定

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:33:22 24 4
gpt4 key购买 nike

我正在开发许多项目(目前组织为 eclipse 项目)。有一个核心项目,主要提供核心API和一些二次实现和抽象类。所有其他项目都依赖于此项目。

将项目集成到我们的 maven 存储库时,我们遇到了 maven 命名约定的问题。正如在 SO 上讨论的那样,groupId 通常应该是反向公司域名 (com.example) 加上项目名称 (com.example.foo)。 Maven 命名约定建议为子项目添加一个额外的后缀,例如插件 (com.example.foo.plugin)。

在我们的例子中,我们没有插件,而是核心项目提供的 API 的多个(大部分是独立的)实现。我们目前的命名建议是:

  • com.example.foo 作为所有项目的 groupId,虽然它们被拆分到不同的 java 包中(com.example.foo 包含 API,com.example.foo.bar 包含 bar 实现)
  • 作为 artifactId 的项目名称,没有引用项目的前缀(bar 而不是 foo-bar)

关键点是(尽管我们的项目如上所述分布在多个包中)它们并不是 API 核心项目的真正子项目。

这个建议是否符合 maven 命名约定?

以防万一:这个问题不是要求有主见的回答,而是要求对上述问题进行有争议的回答。

最佳答案

我会说这是您自己的品味和偏好的问题。

通常,您会将相似的模块集分组在相同的 groupId 下。例如,您可以拥有以下内容:

com.foo.bar:parent                          (parent pom for all projects)
com.foo.bar:core-api (some very core classes)
com.foo.bar:commons (some common classes)
com.foo.bar:io (some IO classes)
com.foo.bar:utils (some utility classes)
com.foo.bar.messaging:messaging-core (messaging core classes)
com.foo.bar.messaging:messaging-rest-api (REST API for messaging)
com.foo.bar.messaging:messaging-jms (some JMS code)
com.foo.bar.web:rest-api (your restlets)
com.foo.bar.web:web-core (core classes to be used by web modules)
com.foo.bar.web:web-parent (a parent pom for all your web projects)
com.foo.bar.web:web-ui (UI stuff like css/images/js/etc)
com.foo.bar.web:web-assembly (a web assembly that bundles all modules)
... (I hope by now you get my drift) ...

您不一定需要将类以公共(public)包开头的所有模块分组到同一 groupId 下。如果您愿意,您可以那样做,但人们在现实生活中很少真正使用它。严格程度和详细程度由您决定,但在 Artifact 的情况下,这通常无关紧要,因为没有任何东西可以将包名称与 groupId 联系起来。

此外,为您的模块使用前缀也很有帮助,但这取决于您。如果你愿意,你可以:

com.foo.bar:bar-parent
com.foo.bar:bar-core-api
com.foo.bar:bar-commons

这完全取决于您。有些人会争辩说,如果你有一个像 com.foo.bar 这样的 groupId,那么你就不需要在中有一个 bar- 前缀父栏。在某种程度上这是真的。但是当你使用像 Nexus、Archiva 或Artifactory 并且您正在搜索 parent(或其他一些常见名称,例如...commons),您最终可能会得到一个相当长的结果列表,与 bar-parent 相对。

最后,重要的是您愿意达到何种程度的详细程度以及真正满足您的需求。 Maven 为您提供了这方面所需的所有自由。

关于java - 应用 Maven groupId 命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25610544/

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