20

我的团队是 Maven 的新手,我们还没有找到任何关于为我们的项目选择 artifactID 的明确指导。

我知道命名约定指南说 artifactIDs 应该是

“任何你想要的名字,小写字母,没有奇怪的符号”

但是我小组中的一些人希望对 groupID和artifactID都使用反向域名样式。

基于上述指南以及我在中央存储库中看到的所有示例,我认为使用反向域样式 artifactID 是没有意义的,但我不知道这样做实际上是无效的还是只是皱眉. 我隐约记得读过一些关于各种存储库管理器无法有效处理包含句点 (.) 字符的 artifactID 的内容,但我不记得我在哪里读到的,现在找不到了。

Maven artifactID 中允许的字符有哪些规则(如果有)?

4

2 回答 2

23

作为开始,这里有一些处理这个主题的帖子:

指针

在堆栈溢出!

然后,我建议您不要在 artifactId 中使用 groupId。这是多余的;)。

我引用了似乎与您的问题最相关的 sonatype 文档:

Sonatype 命名约定

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,公共数学

如果您分发版本,那么您可以选择任何带有数字和点的典型版本(1.0、1.1、1.0.1、...)。不要使用日期,因为它们通常与 SNAPSHOT(每晚)构建相关联。如果它是第三方工件,无论它是什么,你都必须使用他们的版本号,并且看起来很奇怪。例如。2.0、2.0.1、1.3.1

因此,在您的 groupId您的包名称中使用反向 dns 是一个很好的做法。在 artifactId 中再次使用它们不是。

于 2012-08-18T17:42:18.887 回答
4

我认为 groupId 就像 Java 中的包名,artifactId 类似于类名(好吧不是真的),但我认为与类名有关系。在 Maven 中,您通常为模块/项目命名,特别是 artifactId。

此外,我在这里找到了有关 artifactId 的一些提示。

于 2012-08-18T10:17:53.907 回答