Gradle 模块化插件使用教程
项目介绍
Gradle 模块化插件(Gradle Modules Plugin)是一个帮助开发者使用 Java 平台模块系统(Java Platform Module System,JPMS)创建应用程序和库的插件。该插件发布在 Gradle 插件仓库中,使得从 Gradle 的角度进行模块的构建、测试和运行变得无缝。它自动设置编译器和 JVM 的设置,使用 --module-path
等标志,以便您可以无需手动配置构建文件即可构建、测试和运行 JPMS 模块。
项目快速启动
安装插件
首先,在 build.gradle
文件中应用插件:
plugins {
id 'org.javamodularity.moduleplugin' version '1.8.12'
}
配置项目
确保您的项目使用 JDK 11 或更高版本,并在 build.gradle
文件中进行以下配置:
java {
toolchain {
languageVersion = JavaLanguageVersion.of(11)
}
}
repositories {
mavenCentral()
}
test {
useJUnitPlatform()
testLogging {
events("PASSED", "FAILED", "SKIPPED")
}
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.1'
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.3.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.1'
}
创建模块
在项目中创建 module-info.java
文件,定义模块:
module my.module {
requires java.base;
// 添加其他需要的模块
}
构建项目
运行以下命令构建项目:
./gradlew build
应用案例和最佳实践
案例1:多模块项目
在一个包含多个模块的项目中使用 Gradle 模块化插件,可以简化模块间的依赖管理和构建过程。例如,一个包含 greeter.api
和 greeter.provider
模块的项目:
dependencies {
implementation project(':greeter.api')
runtimeOnly project(':greeter.provider')
}
最佳实践
- 明确模块依赖:在
module-info.java
中明确声明所有模块依赖,避免隐式依赖。 - 使用
--module-path
:确保在运行和测试时使用--module-path
正确加载模块。 - 禁用
inferModulePath
:在 Gradle 配置中禁用inferModulePath
选项,以避免潜在问题。
典型生态项目
项目1:Java 9 模块化示例
该项目展示了如何使用 Gradle 模块化插件进行 Java 9 模块化开发,包括模块的定义、依赖管理和构建过程。
项目2:多语言支持
该项目展示了如何在同一个项目中支持多种编程语言(如 Java 和 Kotlin),并使用 Gradle 模块化插件进行统一管理。
通过以上步骤和案例,您可以快速上手并充分利用 Gradle 模块化插件进行模块化开发。