Oleksandr Kovtunov
07/03/2024, 6:01 AMclass MyPlugin : Plugin<Project> {
override fun apply(target: Project) {
// some condition based on another plugin that already applied
if (some condition) {
// should apply plugin with version 1.0.0
} else (some condition) {
// should apply plugin with version 2.0.0
} else {
// should apply plugin with version 3.0.0
}
}
}
buildscript dependency won't work
I have tried to add another plugin as buildscript dependency but this approach won't work.
project.buildscript.dependencies.add(
"classpath",
"com.google.devtools.ksp:symbol-processing-gradle-plugin:2.0.0-1.0.22"
)
project.plugins.apply("com.google.devtools.ksp")
// and even
project.afterEvaluate { project.plugins.apply("com.google.devtools.ksp") }Sergej Koščejev
07/03/2024, 8:21 AMOleksandr Kovtunov
07/03/2024, 8:40 AM// Adding dependency to classpath
buildscript.dependencies.add(
"classpath",
"com.google.devtools.ksp:symbol-processing-gradle-plugin:2.0.0-1.0.21"
)
// Using classloader to load dependency
buildscript.classLoader.apply {
println("Applying classpath: $it")
val classLoader = this as VisitableURLClassLoader
classLoader.apply {
addURL(it.toURI().toURL())
}
}
// Adding plugin
plugins.apply("com.google.devtools.ksp")
// Apply dependency as ksp
dependencies.add("ksp", project(":annotation-api"))Sergej Koščejev
07/03/2024, 8:41 AMVampire
07/03/2024, 9:14 AM