如何从自定义 Gradle 插件配置 Gradle Java 插件
How to configure Gradle Java plugin from a custom Gradle plugin
我在 Kotlin 1.2.50 中编写了一个自定义 Gradle 插件,用于 Gradle 4.8。
我已经通过插件的应用方法成功应用了 Java 插件:
override fun apply(project: Project) {
project.pluginManager.apply(JavaPlugin::class.java)
// configure Java plugin here
}
如何配置 Java 插件?
例如,我想实现以下等同于通常在 build.gradle.kts
中的效果:
java {
sourceCompatibility = VERSION_1_10
targetCompatibility = VERSION_1_10
}
我仔细研究了 Gradle 代码并找到了解决方案:
override fun apply(project: Project) {
project.pluginManager.apply(JavaPlugin::class.java)
val javaPlugin = project.convention.getPlugin(JavaPluginConvention::class.java)
javaPlugin.sourceCompatibility = VERSION_1_10
javaPlugin.targetCompatibility = VERSION_1_10
}
我知道这可能有点晚了,但对于任何在 2022 年寻求此问题答案的人来说,官方指南显示 how to configure plugins via extensions。此外,为了完整起见,本指南建议不要强制使用某些插件,而是在它们可用时进行被动配置。
所以今天,您的问题的解决方案可能如下所示(很抱歉使用 Java 代码,尽管代码应该可以直接映射到 Kotlin):
// enforcing the Java plugin
project.getPluginManager().apply(JavaPlugin.class);
JavaPluginExtension javaPluginExtension = project.getExtensions().getByType(JavaPluginExtension.class);
javaPluginExtension.setSourceCompatibility(JavaVersion.VERSION_1_10);
javaPluginExtension.setTargetCompatibility(JavaVersion.VERSION_1_10);
或者像这样:
// reactively configuring the Java plugin
project.getPlugins().withType(JavaPlugin.class, javaPlugin -> {
JavaPluginExtension javaPluginExtension = project.getExtensions().getByType(JavaPluginExtension.class);
javaPluginExtension.setSourceCompatibility(JavaVersion.VERSION_1_10);
javaPluginExtension.setTargetCompatibility(JavaVersion.VERSION_1_10);
});
我在 Kotlin 1.2.50 中编写了一个自定义 Gradle 插件,用于 Gradle 4.8。
我已经通过插件的应用方法成功应用了 Java 插件:
override fun apply(project: Project) {
project.pluginManager.apply(JavaPlugin::class.java)
// configure Java plugin here
}
如何配置 Java 插件?
例如,我想实现以下等同于通常在 build.gradle.kts
中的效果:
java {
sourceCompatibility = VERSION_1_10
targetCompatibility = VERSION_1_10
}
我仔细研究了 Gradle 代码并找到了解决方案:
override fun apply(project: Project) {
project.pluginManager.apply(JavaPlugin::class.java)
val javaPlugin = project.convention.getPlugin(JavaPluginConvention::class.java)
javaPlugin.sourceCompatibility = VERSION_1_10
javaPlugin.targetCompatibility = VERSION_1_10
}
我知道这可能有点晚了,但对于任何在 2022 年寻求此问题答案的人来说,官方指南显示 how to configure plugins via extensions。此外,为了完整起见,本指南建议不要强制使用某些插件,而是在它们可用时进行被动配置。
所以今天,您的问题的解决方案可能如下所示(很抱歉使用 Java 代码,尽管代码应该可以直接映射到 Kotlin):
// enforcing the Java plugin
project.getPluginManager().apply(JavaPlugin.class);
JavaPluginExtension javaPluginExtension = project.getExtensions().getByType(JavaPluginExtension.class);
javaPluginExtension.setSourceCompatibility(JavaVersion.VERSION_1_10);
javaPluginExtension.setTargetCompatibility(JavaVersion.VERSION_1_10);
或者像这样:
// reactively configuring the Java plugin
project.getPlugins().withType(JavaPlugin.class, javaPlugin -> {
JavaPluginExtension javaPluginExtension = project.getExtensions().getByType(JavaPluginExtension.class);
javaPluginExtension.setSourceCompatibility(JavaVersion.VERSION_1_10);
javaPluginExtension.setTargetCompatibility(JavaVersion.VERSION_1_10);
});