首页 > 解决方案 > Maven构建多模块项目

问题描述

我最近在 Maven 项目领域学到了越来越多的东西,我想用它来解决我想解决一段时间的想法。这个问题是关于如何使用我将使用的结构有效地构建一个 Maven 项目。

我对结构的看法如下:

- MyProject
  |
  |_Frontend
  | |
  | |_Window
  | | |_pom.xml
  | |...
  | |_pom.xml
  |
  |_Backend
  | |
  | |_Database
  | | |_pom.xml
  | |...
  | |_pom.xml
  |
  |_pom.xml

MyProject的父级在哪里。对于所有这些包装将设置为. 最后 in and将是包含代码的项目,这里例如一个项目和一个项目(实际上在and中当然不止一个项目,这只是为了可视化)。来自的项目可能依赖于来自.FrontendBackendpomFrontendBackendWindowDatabaseFrontendBackendFrontendBackend

我会在父 POM中设置Frontendand Backendas <module>s,在POM中设置as s 中的所有项目,对于. 然后我会在 's POM 的元素中添加项目的,这样我就可以在项目中单独添加所需的依赖项。(在本例中,主要将在项目中)MyProjectFrontend<module>FrontendBackend<dependencies>Backend<dependencyManagement>FrontendFrontendWindow

所以我的问题是:如何构建它以便可以将其用作程序?

我对 Maven 比较陌生,所以我不太熟悉整个构建理念。我得到了它的好处,因此我想使用它,但我不确定如何在这样的项目中实现我想要的。我在网上搜索了答案,但我可能措辞太差,因为我找不到我需要的答案。因此,如果那里有适用于此处的文章或答案,也可以将其链接起来,但是如果这里有人花时间对这个特定问题进行更深入的解释,我不会抱怨^ ^。

所以感谢任何答案。

标签: mavenbuildstructure

解决方案


你想到的结构看起来很合理。我正在为您的图表添加一些细节:

+- myProject 
   +- pom.xml  ... <packaging>pom, aggregator (<modules>) of frontend & backend
   |
   +- frontend
   |  +- pom.xml  ... <parent>myProject, <packaging>pom, aggregator (<modules>) of window & ***
   |  |  
   |  +- window
   |  |  +- pom.xml  ... <parent>frontend
   |  |
   |  +- ***
   |     +- pom.xml  ... <parent>frontend
   |
   +- backend
      +- pom.xml  ... <parent>myProject, <packaging>pom, aggregator (<modules>) of database & ***
      |
      +- database
      |  +- pom.xml  ... <parent>backend
      |
      +- ***
         +- pom.xml  ... <parent>backend

澄清一下,关于“<em>MyProject将是父 [...] 包装将设置为pom。”,请参阅POM 参考,继承诉聚合这个答案

长话短说,有以下关系:

  • 聚合器¹ ( <packaging>pom) → (子)模块 ...用于(子)模块的聚合
  • 父项目 ( <packaging>pom¹|jar|war|...) ← 子项目 ... 用于继承(从父项目到子项目的 POM 配置)

因此,<packaging>pom由于MyProject是父级而不是必需的,但因为它是聚合器。事实上,父项目对其子项目一无所知。只有子项目声明<parent>...


推荐阅读