【问题标题】:Only apply plugin for kotlin script gradle in some situations, but then can't resolve plugin configuration仅在某些情况下为 kotlin script gradle 应用插件,但无法解析插件配置
【发布时间】:2020-03-24 15:15:37
【问题描述】:

我的团队正在将他们的 Gradle 脚本从 Groovy 转换为 Kotlin,我们正在努力使用 Kotlin 脚本 gradle 复制一些行为。

有时我们只在构建 CI 时应用和配置插件。应用你不使用的插件是没有意义的。

plugins {
  if (Build.isCi) {
    id("com.google.firebase.appdistribution")
  }
}

但是,当我们在本地构建时,我们的构建脚本中会出现错误,因为我们的插件配置无法解析:

if (Build.isCi) {
  firebaseAppDistribution { // <-- Can't resolve `firebaseAppDistribution`
  }
}

【问题讨论】:

    标签: gradle gradle-kotlin-dsl


    【解决方案1】:

    plugins DSL 对您可以做什么非常严格。对于 Kotlin 来说尤其如此,因为它是在后台静态输入和编译的。

    我相信您需要执行以下操作:

    plugins {
        id("com.google.firebase.appdistribution") apply false
    }
    

    这应该确保 Firebase 插件的相关扩展/类位于构建脚本类路径中。

    然后稍后在您的构建脚本中,实际应用和配置插件:

    plugins {
        id("com.google.firebase.appdistribution") apply false
    }
    
    if (Build.isCi) {
        apply(plugin = "com.google.firebase.appdistribution")
        configure<FirebaseAppDistributionExtension> {
            // ...
        }
    }
    

    我不知道firebaseAppDistribution 的实际类型/类,所以我以FirebaseAppDistributionExtension 为例。您需要找出扩展的具体类型并将其用作类型。

    参考资料:

    【讨论】:

      猜你喜欢
      • 2022-06-21
      • 2022-12-21
      • 2019-10-24
      • 2021-01-29
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多