无法在自定义gradle插件实现中使用外部依赖项

时间:2019-07-01 19:40:41

标签: java gradle groovy build.gradle gradle-plugin

尝试在我正在构建的自定义gradle插件中使用外部依赖项时,无论如何我都无法导入或使用它们。

我试图在构建脚本和常规依赖项关闭中指定我的依赖项。我正在使用Gradle 5.5(包装器脚本),并且正在使用buildSrc方法编写自定义gradle插件。

// Necessary if loading custom plugins
apply plugin: 'java-gradle-plugin'

buildscript {
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath 'com.google.code.gson:gson:2.8.5'
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'

group 'com.foo'

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
    jcenter()
}

gradlePlugin {
    plugins {
        greeterPlugin {
            id = 'com.foo.dbcreation-plugin'
            implementationClass = 'com.foo.dbcreation.DbCreation'
        }
    }
}

dependencies {
    compile 'com.google.code.gson:gson:2.8.5'
}

2 个答案:

答案 0 :(得分:0)

我在这里看到很多问题。

  1. buildscript不能控制插件实现的依赖性。
  2. 使用plugins {} DSL块来应用插件。这是首选方式:https://docs.gradle.org/current/userguide/plugins.html#sec:plugins_block
  3. 由于https://docs.gradle.org/current/userguide/java_plugin.html#tab:configurations中已弃用implementation,因此应在compile上使用compile

话虽如此,您的Gradle文件应类似于:

plugins {
    id 'java-gradle-plugin'
    id 'eclipse'
    id 'idea'
}

group 'com.foo'

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
    jcenter()
}

gradlePlugin {
    plugins {
        greeterPlugin {
            id = 'com.foo.dbcreation-plugin'
            implementationClass = 'com.foo.dbcreation.DbCreation'
        }
    }
}

dependencies {
    implementation 'com.google.code.gson:gson:2.8.5'
}

答案 1 :(得分:0)

我弄清楚了我的问题所在。对于使用buildSrc目录构建的项目,您需要将build.gradle文件驻留在该目录中,而不是根项目目录(build.gradle通常位于其中)。我只是将项目转换为普通的gradle项目,并且效果很好。