【问题标题】:Where should I put the main implementation in a multi module Maven project?我应该将主要实现放在多模块 Maven 项目中的哪个位置?
【发布时间】:2010-10-10 16:25:29
【问题描述】:

我有一个小型(4 模块)maven 项目,其根 pom 位于 pom 包装中。现在,我有一个 impl 模块,其中包含主要方法和设置。这确实会导致一些问题,例如为整个项目构建一个 jar,(可能)包含所有模块的巨大依赖列表,以及试图追溯到未来开发人员的主要方法的混乱。

所以我在想:将这类东西放在根项目中是最佳做法,还是应该留在自己的模块中?将其放入根目录是否有任何缺点(例如插件问题)?

【问题讨论】:

    标签: java maven-2


    【解决方案1】:

    这确实会导致一些问题,例如为整个项目构建一个 jar

    对此有解决方案(例如,使用专用模块和 Maven Assembly 插件或 Maven Shade 插件)。

    (可能)包含所有模块的巨大依赖列表,

    我不明白你在这里指的是什么。

    以及试图追溯到未来开发人员的主要方法的困惑。

    如果没有人可以传递信息,只需记录一下即可。

    所以我在想:将这类东西放在根项目中是最佳做法,还是应该留在自己的模块中?将其放入根目录是否有任何缺点(例如插件问题)?

    Stephen 是正确的,聚合和/或父 POM 必须具有 pom 类型的包装,并且您不能在其中放入任何代码。

    【讨论】:

    • “(可能的)包含所有模块的巨大依赖列表”意味着 impl 模块必须对几乎所有模块都有依赖关系。如果一个 maven 项目变得很大,你在 impl 模块中谈论一个巨大的依赖列表
    • @TheLQ 好吧,是的,impl 模块必须声明对其直接依赖项的依赖项。但我不确定是否理解这个问题。而且我不确定将依赖项声明移到给定模块之外会使事情变得“更好”。
    【解决方案2】:

    AFAIK,多模块项目的父模块必须具有“pom”类型,这将阻止将任何代码或其他资源放入其中。

    当然,我不会尝试这个。

    如果您想将所有类等组装到一个 JAR 中,还有其他方法可以做到这一点。例如,看看Maven Shade Plugin

    【讨论】:

      猜你喜欢
      • 2010-12-06
      • 1970-01-01
      • 2011-04-06
      • 2010-10-02
      • 2011-03-01
      • 2018-06-16
      • 1970-01-01
      • 2012-06-16
      • 1970-01-01
      相关资源
      最近更新 更多