Maven 工件和 groupId 命名

问题描述 投票:0回答:5

我目前正在将一些项目从 Ant 迁移到 Maven。像我一样墨守成规,我想使用既定的约定来查找

groupId
artifactId
,但我找不到任何详细的约定(有一些,但它们没有涵盖我想知道的要点).

以本项目为例,首先是Java包:

com.mycompany.teatimer

Tea Timer实际上是两个词,但是Java包命名约定禁止插入下划线或连字符,所以我把它们写在一起。

我选择了与包裹 ID 相同的

groupId
,因为我认为这是一个好主意。是吗?

最后,我必须选择一个

artifactId
,我目前选择了
teatimer
。但是当我查看其他 Maven 项目时,他们使用连字符来分割
artifactId
中的单词,如下所示:
tea-timer
。但当连接到
groupId
时,它看起来确实很奇怪:
com.mycompany.teatimer.tea-timer

你会怎么做?

另一个例子:

套餐名称:

com.mycompany.awesomeinhouseframework

groupId
com.mycompany.awesomeinhouseframework
(?)

artifactId
awesome-inhouse-framework
(?)

maven-2 naming-conventions
5个回答
287
投票

怪异是非常主观的,我只是建议遵循官方推荐:

groupId、artifactId 和 version 命名约定指南

  • groupId
    将在所有项目中唯一标识您的项目, 所以我们需要强制执行命名模式。 它必须遵循包名称 规则,这意味着必须在 至少作为您控制的域名, 您可以创建任意多个子组 如你所愿。 查看更多信息 关于包名称.

    例如。

    org.apache.maven
    org.apache.commons

    确定 groupId 粒度的一个好方法是使用 项目结构。也就是说,如果 当前项目是一个多模块 项目,它应该附加一个新的 父级 groupId 的标识符。

    例如。

    org.apache.maven
    org.apache.maven.plugins
    org.apache.maven.reporting

  • artifactId
    是没有版本的 jar 的名称。如果你创建了它 然后你可以选择任何你想要的名字 想要小写字母但没有 奇怪的符号。如果是第三方 jar 你必须采取的名称 jar,因为它是分发的。

    例如。

    maven
    commons-math

  • version
    如果您分发它,那么您可以选择任何典型的 带有数字和点的版本(1.0, 1.1、1.0.1、...)。不要使用日期,因为它们通常与 快照(每晚)构建。如果它是一个 第三方神器,你必须使用 无论它们的版本号是什么, 看起来很奇怪。

    例如。

    2.0
    2.0.1
    1.3.1


169
投票

你的约定似乎很合理。如果我在 Maven 存储库中搜索您的框架,我会在

awesome-inhouse-framework-x.y.jar
组目录中查找
com.mycompany.awesomeinhouseframework
。我会根据你们的约定在那里找到它。

两个简单的规则对我有用:

  • groupId 的反向域包(因为它们非常独特)以及有关 Java 包名称的所有约束
  • 项目名称为artifactId(请记住,它应该是jar名称友好的,即不包含可能对文件名无效或看起来很奇怪的字符)

115
投票
构建基本的第一个

Maven 应用程序时请考虑以下事项:

groupId


  • com.companyname
    
    

artifactId


  • project
    
    

version


    0.0.1

0
投票
但是,我不同意

groupId、artifactId 和 version 命名约定指南的官方定义,该定义建议 groupId 必须以您控制的反向域名开头。

com

表示该项目属于公司,
org
表示该项目属于社会组织。这些都可以,但是对于像xxx.tv、xxx.uk、xxx.cn这样奇怪的域名,以“tv.”、“cn.”开头的groupId命名是没有意义的,groupId应该传递基本信息项目的而不是域的。 


0
投票
除了其他之外,我还建议避免将团队名称作为组 ID 的一部分。根据我的经验,项目通常可以在团队之间移动,或者团队可以重命名,因此这不利于识别工件。

© www.soinside.com 2019 - 2024. All rights reserved.