多模块(pom)和java模块系统的区别

rea*_*per 6 java maven multi-module java-module

我试图了解使用 Java 平台模块系统 (JPMS) 构建项目与使用 multi-poms 构建项目之间的区别。

主要区别是 JPMS 封装代码而多 pom 项目分离项目依赖关系?

我在谷歌上搜索过,但没有找到对差异的很好解释,但我看到模块这个词可以互换使用。

Bas*_*que 6

计算行业经常回收术语。语境就是一切。

你提出的两种“模块”是不相关的、正交的问题。

  • Java平台模块系统(JPMS)是一种能够识别Java编译器命名空间中的所有类,并在运行时可用的方法之中。
  • Apache Maven中的多模块是一种将可以作为单独项目处理的项目合并到一个项目中的方法。项目中的每个模块都有自己的 POM,有自己的依赖项和构建设置,但是当组合为 Maven 多模块时,所有模块都可以作为一个超级项目进行管理。

Java 中非常简单的应用程序可能两者都不使用。

  • 理想情况下,新的 Java 应用程序将使用 JPMS,但它在技术上仍然是可选的。在一个完美的世界中,JPMS 会包含在原始 Java 中,但实际上是最近才在 Java 9 中添加的。如果您的应用程序将作为独立运行并捆绑JVM,那么 JPMS 非常方便,因为您可以包含一个已被剥了下来,只实际使用您的特定应用程序的部分JVM(见JLINK和JPMS启用相关的工具)。
  • Maven 多模块项目通常仅用于复杂的项目,例如包含一项功能的应用程序,这些功能可能会被分拆用于其他项目。或者,多模块 Maven 项目可能适用于将前端用户界面模块和后端业务逻辑模块结合在一起的应用程序,我们希望单独管理每个部分,但将它们组合成一个可交付成果,例如Vaadin流网络应用程序。

我可以看出你是如何变得困惑的,因为两者都与安排课程有关。简单来说,Maven 模块是关于编译时的依赖管理构建 自动化),而 Java 平台模块系统是关于运行时的