IntelliJ IDEA项目模块与Java 9模块是否有不同的概念?

J.J*_*eam 3 module intellij-idea java-9

我从未在IntelliJ IDEA中使用过模块,但是在Java 9中出现了模块(我也从未使用过,但现在想研究一下这是什么)

所以问题是:彼此匹配吗?还是IDEA模块出现在很久之前并出于不同目的?

Cra*_*der 5

这个概念早在Java 9模块出现之前就已出现。它也不是特定于IDE的。当处理包含多个子项目的项目时,Maven和Gradle之类的构建系统也使用此概念。在IntelliJ IDEA术语中,该模块只是一个子项目(在Eclipse中,该模块是一个Project,而Workspace可以具有多个项目)。

Java 9模块映射到IntelliJ IDEA模块,并通过模块描述符提供其他功能,这些描述符指定:

  • 它显式提供给其他模块的软件包(该模块中的所有其他软件包隐式地对其他模块不可用)
  • 它提供的服务
  • 它消耗的服务
  • 可以反射到其他哪些模块

IntelliJ IDEA已经有了一个项目模块的概念。每个IntelliJ IDEA模块都构建自己的类路径。随着新Java平台模块系统的引入,IntelliJ IDEA模块必须通过支持Java平台的模块路径(如果使用它而不是类路径)来扩展其功能。

相关链接:

  • 最常见的情况是,当您在一个大型项目中将多个子系统划分为不同的模块/库时。您可能会执行影响几个模块和库API的重构。使用jar依赖项不切实际,因为每次更改代码时都需要重新构建jar,并且在一个模块中进行重构不会影响配置为jar依赖关系而不是IDE模块的其他模块。考虑主应用程序和提供一些API的库。您想在库中重命名API方法。使用模块时要容易得多。 (3认同)