maven - Maven构建多模块项目
问题描述
我最近在 Maven 项目领域学到了越来越多的东西,我想用它来解决我想解决一段时间的想法。这个问题是关于如何使用我将使用的结构有效地构建一个 Maven 项目。
我对结构的看法如下:
- MyProject
|
|_Frontend
| |
| |_Window
| | |_pom.xml
| |...
| |_pom.xml
|
|_Backend
| |
| |_Database
| | |_pom.xml
| |...
| |_pom.xml
|
|_pom.xml
和MyProject
的父级在哪里。对于所有这些包装将设置为. 最后 in and将是包含代码的项目,这里例如一个项目和一个项目(实际上在and中当然不止一个项目,这只是为了可视化)。来自的项目可能依赖于来自.Frontend
Backend
pom
Frontend
Backend
Window
Database
Frontend
Backend
Frontend
Backend
我会在父 POM中设置Frontend
and Backend
as <module>
s,在POM中设置as s 中的所有项目,对于. 然后我会在 's POM 的元素中添加项目的,这样我就可以在项目中单独添加所需的依赖项。(在本例中,主要将在项目中)MyProject
Frontend
<module>
Frontend
Backend
<dependencies>
Backend
<dependencyManagement>
Frontend
Frontend
Window
所以我的问题是:如何构建它以便可以将其用作程序?
我对 Maven 比较陌生,所以我不太熟悉整个构建理念。我得到了它的好处,因此我想使用它,但我不确定如何在这样的项目中实现我想要的。我在网上搜索了答案,但我可能措辞太差,因为我找不到我需要的答案。因此,如果那里有适用于此处的文章或答案,也可以将其链接起来,但是如果这里有人花时间对这个特定问题进行更深入的解释,我不会抱怨^ ^。
所以感谢任何答案。
解决方案
你想到的结构看起来很合理。我正在为您的图表添加一些细节:
+- 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>...
。
推荐阅读
- azure - 在 Azure 中的何处集中 SSL 证书?
- powershell - 使用 powershell 获取修改为使用 AM/PM 格式化的日期
- powerbi - 如何制作具有多个列名作为选项的切片器
- couchdb - 带有 $or 和 $and 的 CouchDB 索引不起作用,但只有 $and 起作用
- java - 使用 Gradle 5 和 Cucumber-JVM 从不同目录运行 Cucumber
- python - 列表索引超出范围 - 在排序列表中查找重复项
- linux - 如何防止cmake剥离创建的共享库
- excel - 如果另一张纸上的值大于/小于任一值,则在 Excel 中突出显示 2 个单元格
- origen-sdk - Origen.load_target 是否允许增加初始化选项?
- spring-boot - Minikube VM hyperkit:Spring Boot:连接到本地机器