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

Difference between multi-module (pom) and java module system

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

主要区别是JPMS封装了代码,而multi-pom项目分离了项目依赖?

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

计算行业经常循环使用术语。上下文就是一切。

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

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

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

  • 理想情况下,新的 Java 应用程序会使用 JPMS,但它在技术上仍然是可选的。在理想情况下,JPMS 应该包含在原始 Java 中,但实际上只是最近才添加到 Java 中 9. 如果您的应用程序将 运行 作为独立的,带有 JVM bundled, because you can include a JVM that has been stripped down to only the parts actually used by your particular app (see jlink 和 JPMS 启用的相关工具)。
  • Maven 多模块项目通常只用于复杂的项目,例如包含一些功能的应用程序可能会被剥离用于其他项目。或者,多模块 Maven 项目可能适用于结合了前端用户界面模块和后端业务逻辑模块的应用程序,我们希望单独管理每个部分,但又将它们组合成一个单一的可交付成果,例如 Vaadin Flow 网络应用程序。

我知道你怎么会感到困惑,因为两者都与安排有关 类。简单来说,Maven 模块大约是 compile-time (dependency management and build automation) 而 Java Platform Module System 大约是 运行time.