小编JMe*_*nik的帖子

分层多模块项目的Maven命名约定

我在一个带有分层目录结构的多模块项目中有一个关于Maven命名约定(groupId,artifactId和目录名称)的问题.

研究

在询问之前,我通过其他网络了解了这个主题以及我为自己清理的内容:

  1. 我的问题可能重复,但它不包括多层次级别.

  2. 项目目录名称应与artificatId匹配.

  3. 命名约定指南 提供了示例:

    • groupId将在所有项目中唯一地标识您的项目,因此我们需要强制执行命名模式.它必须遵循包名称规则(例如org.apache.maven,org.apache.commons,org.apache.maven.plugins)

    • artifactId如果你创建了它,那么你可以用小写字母和没有奇怪的符号选择你想要的任何名称.(例如,maven,commons-math)

这很简单,我理解它,但有些事情仍然不清楚.

约定中提到的artifactId示例只能应用于单级层次结构模块.

例子

我浏览了maven存储库并提取了一些示例:

Spring主要使用名称:spring-core,spring-context,spring-context-support.所有独立模块都是一级层次结构和弹出前缀,以提高搜索效率.没有问题,因为等级不是那么深.

Apache CXF命名对于Apache来说是非常规的.工件是独立模块,在名称中最多可包含5个不同的工件.CXF的工具,wsdlto,数据绑定,JAXB.

有很多工件(cxf-rt-databinding-jaxb,cxf-rt-databinding-aegis,cxf-rt-databinding-xmlbeans,cxf-rt-databinding-sdo),它们可以分组在多个模块项目中(cxf-rt) - 数据绑定),但他们没有,因此名称成为意大利面条.

最后,Maven插件首先是一个多模块项目(在org.apache.maven之后),它有一些工件,如:maven-compiler-plugin,maven-enforcer-plugin.

有很多例子,并且都遵循命名artifactIds(因此是项目目录)的不同约定.

结果

从示例中获取最佳实践,让我们检查层次结构级别.

一级层次结构命名将是(

groupId:    org.organization.project
artifactId: project-portal ---.
                              |
                              project-portal-service
                              |
                              project-portal-plugins (continued on next diagram)
                              |
                              project-portal-util
Run Code Online (Sandbox Code Playgroud)

(续)两级层次结构将是:

groupId:    org.organization.project.plugins
artifactId: project-portal-plugins ---.
                                      |
                                      project-sample-plugin
                                      |
                                      project-another-great-plugin
                                      |
                                      ???? (multiple module project)
Run Code Online (Sandbox Code Playgroud)

你看到问号?多数民众赞成在哪里

问题

我遵循示例中的约定(忽略意大利面条Apache CXF示例):

  • 根 - 项目门户(例如,spring-core,maven-core)
  • 第一级层次结构名称从root - project-portal-plugins继承(例如,spring-context-support).
  • 二级层次结构名称 - project-sample-plugin(例如maven-compiler-plugin).

现在我们被困在第三级,就像没有保存和检查点的旧游戏一样.

  1. 这是从更深层次结构级别的Maven示例中获取的正确目录命名路径吗? …

directory-structure naming-conventions hierarchy maven multi-module

33
推荐指数
2
解决办法
1万
查看次数