构建 Java 模块示例
版本 8.14
您可以在支持 Gradle 的 IDE 中打开此示例。 |
此示例展示了如何创建一个包含Java 模块的多项目。Java 模块是 Java 自身的功能,从 Java 9 开始可用,它提供了更好的封装性。
在 Gradle 中,通过添加 module-info.java
文件,每个包含 Java 源代码的 源集 都可以转变为一个模块。通常,在这种带有 Java 模块的项目中,子项目的 main 源集代表一个模块。
src
└── main
└── java
└── module-info.java
在 module-info.java
文件中,您可以使用诸如 requires
或 requires transitive
的关键字定义对其他模块的依赖关系。这些对应于 Gradle 构建文件中定义的 implementation
和 api
依赖关系。此外,一个模块会 exports
(导出)应该对消费者可见的包。其他包在模块外部是不可见的。
module org.gradle.sample.utilities {
requires transitive org.gradle.sample.list;
exports org.gradle.sample.utilities;
}
需要访问模块内部细节的单元(白盒)测试可以通过不向测试源集添加 module-info.java
的传统方式编写。在测试执行过程中,模块将被视为标准的 Java 库,并且封装已被禁用。
黑盒(例如集成)测试,在测试执行期间也应遵循封装规则,可以通过向相应的测试源集本身添加 module-info.java
文件来编写。这在这个扩展示例中有所展示。