【问题标题】:Multi-Modules maven pom多模块maven pom
【发布时间】:2012-04-27 08:20:28
【问题描述】:

在第一次编写多模块 maven pom 时,我想知道一些事情。

首先,这是我的父母 pom:

    ...
    <modelVersion>4.0.0</modelVersion>
    <groupId>project.room_management</groupId>
    <artifactId>room_management</artifactId>
    <packaging>pom</packaging>
    <version>1.0</version>
    <name>room_management</name>
    <modules>
        <module>room_management_dao</module>
        <module>room_management_domain</module>
        <module>room_management_service</module>
        <module>room_management_gui</module>
    </modules>
    ...

和它的一个孩子:

     ...
    <parent>
        <groupId>project.room_management</groupId>
        <artifactId>room_management</artifactId>
        <version>1.0</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <groupId>project.room_management</groupId>
    <artifactId>room_management_domain</artifactId>
    <version>1.0</version>
   ...

考虑到我不需要从父级到子级 pom 共享公共模块,我可以在没有“风险”的情况下将父级声明删除到子级 pom 中吗?或者 Maven 确实需要它来编译模块?

【问题讨论】:

  • 在子 poms 中声明 &lt;parent&gt; 有什么问题?即为什么要删除它?
  • 事实上,我想知道这个元素是否对有关模块编译的决定起重要作用。确实,在这个 url:docs.codehaus.org/display/MAVENUSER/Multi-modules+projects,表明需要父元素才能管理依赖关系。

标签: java dependencies maven-3


【解决方案1】:

您不需要模块中的&lt;parent&gt; 部分。

这主要意味着每个模块必须是独立的 - 您不能通过父模块共享配置部分。

【讨论】:

  • 请注意,给定一个带有模块的项目,Maven 应该以正确的顺序编译它们以满足依赖关系。这与我使用“mvn clean install”的经验一致。
【解决方案2】:

在这个例子中,你需要父元素,因为你在 gui 和你的服务之间有依赖关系(服务到 dao 也是如此)。此外,您需要定义模块之间的依赖关系以查看哪个模块使用哪个模块。另一方面,maven 需要这些信息来预测重要的模块的构建顺序。 拥有这种关系的下一个好处是您可以在父模块中定义依赖项的插件/版本以及许多其他内容。

【讨论】:

  • 我尝试在没有父元素的情况下编译整个,一切都很好。您能否解释一下为什么这么说:“此外,您需要定义模块之间的依赖关系以查看哪个模块使用哪个模块。”是为了读者的简单知识还是为了真正的内部maven机制?
  • 这个项目看起来像一个典型的多模块构建,它使用父/子关系和模块之间的关系。如果您可以在没有它的情况下工作,那就没问题了。但我假设你在模块之间有关系。
  • 我刚刚意识到我误读了你的第一条评论......当然,模块之间的依赖关系,maven 需要它来巩固关于编译的决定。我刚刚跳过了子模块的父知识,一切都很好。谢谢:)
猜你喜欢
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
  • 2010-12-31
  • 1970-01-01
  • 1970-01-01
  • 2020-06-27
  • 1970-01-01
  • 2012-02-06
相关资源
最近更新 更多