如何应用buildSrc插件中的Kotlin插件?
我有一个包含以下内容的build.gradle.kts文件的Kotlin项目:
plugins {
application
kotlin("jvm")
kotlin("plugin.serialization")
}我想在buildSrc中创建一个自定义插件:
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginWrapper
class MyPlugin: Plugin<Project> {
override fun apply(project: Project) {
project.pluginManager.apply("org.gradle.application") //This works
project.pluginManager.apply("¿kotlin(jvm)?") //<-- Here is my doubt
project.pluginManager.apply("¿kotlin(plugin.serialization)?") //<-- Here is my doubt
}
}像这样使用它:
plugins {
id("com.example.myplugin")
}发布于 2022-10-24 20:25:33
要从buildSrc插件中应用Gradle插件,您需要做两件事
buildSrc/build.gradle.kts中将插件添加为依赖项
插件必须使用Maven坐标而不是插件ID作为依赖项添加,插件的Maven坐标可以在Gradle插件门户中找到。- [https://plugins.gradle.org/plugin/org.jetbrains.kotlin.jvm](https://plugins.gradle.org/plugin/org.jetbrains.kotlin.jvm)
- [https://plugins.gradle.org/plugin/org.jetbrains.kotlin.plugin.serialization](https://plugins.gradle.org/plugin/org.jetbrains.kotlin.plugin.serialization)// buildSrc/build.gradle.kts插件{ kotlin-dsl }依赖项{ // Kotlin Gradle和序列化插件implementation("org.jetbrains.kotlin:kotlin-serialization:1.7.20") }的Maven坐标
kotlin("jvm")是一个辅助函数,它模糊了实际的Gradle插件ID,也就是org.jetbrains.kotlin.jvm)
类project.pluginManager.apply("org.jetbrains.kotlin.jvm"):Plugin {重写乐趣应用程序(项目:项目){ project.pluginManager.apply("org.jetbrains.kotlin.plugin.serialization") // Kotlin的插件类&序列化插件project.plugins.apply(org.jetbrains.kotlin.gradle.plugin.KotlinPluginWrapper::class) project.plugins.apply(org.jetbrains.kotlinx.serialization.gradle.SerializationGradleSubplugin::class) }
(要找到插件类并不容易--我不得不在罐子里挖来挖去找到插件标记伪像,例如kotlin-serialization-1.7.20-gradle71.jar!/META-INF/gradle-plugins/org.jetbrains.kotlin.plugin.serialization.properties)您也可能希望使用预编译脚本插件。它们允许编写更类似于标准buildSrc文件的build.gradle.kts脚本插件,因此您可以在插件块中应用插件。
// buildSrc/src/main/kotlin/conventions/kotlin-jvm.gradle.kts
plugins {
kotlin("jvm")
}https://stackoverflow.com/questions/74177878
复制相似问题