关于Maven artifactID的命名约定的最佳实践(有限制吗?)

时间:2012-08-17 21:59:45

标签: maven naming-conventions nexus artifactory archiva

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

我知道Guide to naming conventions表示artifactID应该是

  

“无论你想要什么名字都用小写字母和没有奇怪的符号”

但是我的小组中的某些人想要对groupID artifactID使用反向域名样式。

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

Maven artifactID中允许的字符有哪些规则?

2 个答案:

答案 0 :(得分:19)

这里有一些关于这个主题的帖子:

指针

在Stack Overflow上!

然后,我建议你不要在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的名称,因为它是distributed.eg。 maven,commons-math

     

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

所以在groupId AND 中使用反向dns你的包名是一个很好的实践。在artifactId中再次使用它们不是。

答案 1 :(得分:4)

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

此外,我发现了一些关于artifactId here的提示。