在根项目 buildscript 中使用复合构建中的 Gradle 插件

P_K*_*ing 11 android gradle gradle-plugin gradle-kotlin-dsl

我使用 Gradle Kotlin DSL,在我的项目中我有单独的build-dependenciesgradle 模块,settings.gradle.kts如下所示:

pluginManagement {
    repositories {
        google()
        jcenter()
        gradlePluginPortal()
    }
}

includeBuild("build-dependencies")
Run Code Online (Sandbox Code Playgroud)

该模块包含空插件实现和Deps对象。其build.gradle.kts如下:

repositories {
    google()
    jcenter()
    gradlePluginPortal()
}

plugins {
    `kotlin-dsl`
    `java-gradle-plugin`
}

gradlePlugin {
  plugins.register("com.example.dependencies") {
      id = "com.example.dependencies"
      implementationClass = "com.example.dependencies.DependenciesPlugin"
  }
}
Run Code Online (Sandbox Code Playgroud)

部门对象:

object Deps {
  const val buildTools = "com.android.tools.build:gradle:4.1.1"
  // more dependencies
}
Run Code Online (Sandbox Code Playgroud)

我想Deps通过在文件中应用插件来在所有模块中使用这个对象build.gradle.kts

plugins {
  id("com.example.dependencies")
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,我可以导入和使用Deps对象。

但是当我想在根项目中使用它时build.gradle.kts,更准确地说在构建脚本中使用它时,会出现一个问题,如下所示:

buildscript {
    repositories {
        google()
        jcenter()
    }

    plugins {
        id("com.example.dependencies")
    }

    dependencies {
        classpath(com.example.dependencies.Deps.buildTools) // It doesn't work
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以像这样在构建脚本中使用自定义插件,或者您可以建议一些东西来代替这种方法?