【问题标题】:How to add dependency to configuration in gradle plugin如何在 gradle 插件中添加对配置的依赖
【发布时间】:2019-04-02 16:12:26
【问题描述】:

我正在开发 Gradle 自定义插件。我想将依赖项添加到现有配置中。我正在尝试这样做:

open class MyApplicationExtension @Inject constructor(objects: ObjectFactory) {
  val version: Property<String> = objects.property(String::class)
}

class MyApplicationPlugin : Plugin<Project> {
  override fun apply(project: Project) {
    project.plugins.apply(ApplicationPlugin::class)
    val extension = project.extensions.create<MyApplicationExtension>("myApp")
    val implConfig = project.configurations["implementation"]
    implConfig.defaultDependencies {
      add(project.dependencies.create("com:my-app:${extension.version.get()}"))
    }
  }
}

但是当我尝试在 gradle 项目中使用应用程序时,不会添加添加的依赖项。我正在尝试这样使用它:

apply<MyApplicationPlugin>()
the<MyApplicationExtension>().version.set("0.1.0")

dependencies {
  // This overrides the default dependencies
  implementation("com:another:0.2.0")
}

当我调用dependencies 任务时,我的依赖项没有显示在那里。那么如何从自定义插件向implementation 配置添加可配置依赖项?在 Kotlin DSL 中使用 Gradle 5.3.1 运行。

【问题讨论】:

    标签: gradle gradle-kotlin-dsl


    【解决方案1】:

    Default dependencies 仅在没有其他依赖项添加到配置中时使用。

    由于这似乎不是您的用例,您应该简单地以正常方式添加依赖项。

    implConfig.defaultDependencies {
      add(project.dependencies.create("com:my-app:${extension.version.get()}"))
    }
    

    需要成为

    implConfig.dependencies.add(project.dependencies.create("com:my-app:${extension.version.get()}"))
    

    【讨论】:

    • 这不起作用。插件应用程序期间未设置扩展名的值。它失败并出现错误No value has been specified for this provider
    • 这似乎是一个不同的问题。没有堆栈跟踪很难确认。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多