Gradle 自定义插件 : gradleApi() vs Explicit Dependency

标签 gradle gradle-plugin

我正在开发一个自定义 gradle 插件,我的插件项目的依赖项如下所示:

dependencies {
  compile gradleApi()
  compile localGroovy()
  compile('com.xxx.oozie:oozie-dsl-parser:1.0.127') {
    exclude module: 'groovy-all'
  }

  testCompile('org.spockframework:spock-core:1.0-groovy-2.3') {
    exclude module: 'groovy-all'
  }
}

但是,为了可重复构建,我想知道是否使用 localGroovy()gradleApi()是可取的。

经过多次谷歌搜索,虽然我可以替换 localGroovy()使用特定版本的 groovy,我似乎无法找到关于我将替换什么的明确答案 gradleApi()和。

大家有什么建议吗?

谢谢!

最佳答案

我建议申请 java-gradle-plugin .它添加了 gradleApi()自动依赖,还包括一些其他样板配置:https://docs.gradle.org/current/userguide/javaGradle_plugin.html#gsc.tab=0
gradleApi()的版本添加为依赖项取决于您使用构建项目的 Gradle 版本。例如,如果您的包装器具有 Gradle 2.14.1,则使用的 Gradle API 将是该版本。

您也不必担心 localGroovy()因为它已经包含在 gradleTestKit() 中插件添加的依赖项:https://docs.gradle.org/current/userguide/test_kit.html#sub:test-kit-automatic-classpath-injection&gsc.tab=0

下面是一个例子:

apply plugin: 'groovy'
apply plugin: 'java-gradle-plugin'

dependencies {
    testCompile('org.spockframework:spock-core:1.0-groovy-2.4') {
        exclude module: 'groovy-all'
    }
}

关于Gradle 自定义插件 : gradleApi() vs Explicit Dependency,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33906081/

相关文章:

gradle - 在构建脚本中加载其他插件之前使用 gradle 插件

android-studio - Android Studio 3.4 Canary 3编译错误

java - 如何使用 Gradle 拉取 Maven 测试 jar ?

android - Android Studio Gradle项目刷新给出了 “Invalid argument”

java - Gradle多项目配置: Could not find or load main class

gradle - Kotlin Gradle脚本设置

java - 处理多个项目时将资源与 gradle 合并的问题

java - 如何在 Gradle 中设置 NDK 库路径?

android - 原始 kapt 已弃用

gradle - 将属性传递给Gradle Tooling API ProjectConnection