您可以在支持 Gradle 的 IDE 中打开此示例。

此示例展示了如何创建一个包含 Java 模块 的多项目。Java 模块是 Java 本身的一个特性,自 Java 9 起可用,可以实现更好的封装。

在 Gradle 中,通过添加 module-info.java 文件,可以将每个包含 Java 源代码的源集转换为模块。通常,在具有像这样的 Java 模块的项目中,子项目的 main 源集代表一个模块。

src
└── main
    └── java
        └── module-info.java

module-info.java 文件中,您可以使用诸如 requiresrequires transitive 之类的关键字定义对其他模块的依赖关系。这些对应于在 Gradle 构建文件中定义的 implementationapi 依赖项。此外,模块 exports 应该对消费者可见的包。其他包在模块外部不可见。

module org.gradle.sample.utilities {
    requires transitive org.gradle.sample.list;
    exports org.gradle.sample.utilities;
}

需要访问模块内部结构的单元(白盒)测试可以通过向测试源集添加 module-info.java 以传统方式编写。在测试执行中,模块然后被视为标准的 Java 库,封装被禁用。

黑盒(例如集成)测试也应遵循测试执行期间的封装规则,可以通过将相应的测试源集本身通过添加 module-info.java 转换为模块来编写。这在此扩展示例中显示。