多模块maven项目的最佳结构

时间:2013-04-30 20:50:32

标签: maven

我想知道是否有最好的方法来组织maven项目。

如果我有超过1个pom项目,设置它们的最佳方法是什么?

Solution 1:
groupid:parent:version (pom)
    groupid.parent:child:version (jar)
    groupid.parent:subproject:version (pom)
        groupid.parent.subproject:childOne:version (jar)
        groupid.parent.subproject:childTwo:version (jar)
        groupid.parent.subproject:childThree:version (jar)

Solution 2:
groupid:parent:version (pom)
    groupid:parent-child:version (jar)
    groupid:parent-subproject:version (pom)
        groupid:parent-subproject-childOne:version (jar)
        groupid:parent-subproject-childTwo:version (jar)
        groupid:parent-subproject-childThree:version (jar)

还有其他选择吗?!?

1 个答案:

答案 0 :(得分:1)

我优先考虑 Solution 1 中描述的模块组织。请注意,使用这种方法可能会遇到(或预期)某些命名冲突......这些冲突被大多数Maven插件有礼貌地减轻了。例如:

  • 您的Maven生态系统中有一个名为 some.groupId:service:1.0.0
  • 的全局库
  • 然后在你的一个Maven多模块项目中,一个名为 another.groupId:service:1.0.0
  • 的人工制品

现在假装您有一个Maven Web应用程序模块,该模块依赖于前面提到的服务工件。当maven-war-plugin将依赖项复制到WEB-INF / lib目录时,它足够聪明地发现 service jar文件名冲突并重命名每个jar以包含它们的groupId。

我知道这是一些额外的信息,但是有些人并不知道这一点Maven战争情报......