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

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

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

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)来编写。这在此扩展示例中有所展示。