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



尝试在我构建的自定义Gradle插件中使用外部依赖项时,我无法在任何方面导入或使用它们。

我试图在"构建脚本"one_answers"正常依赖关系"中指定我的依赖关系。我正在使用Gradle 5.5(包装脚本(,并且正在使用编写自定义Gradle插件的buildsrc方法。

// 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'
}

我在这里看到很多问题。

  1. buildscript不能控制插件实现的依赖项。
  2. 使用plugins {} DSL块应用插件。这是首选方法:https://docs.gradle.org/current/userguide/plugins.html#sec:plugins_block
  3. 应在compile上使用implementation,因为compile在https://docs.gradle.org/current/current/userguide/java_plugin.html#tab:Configurations

话虽如此,您的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'
}

我弄清楚了我的问题是什么。对于使用buildsrc目录构建的项目,您需要将build.gradle文件保存在该目录中,而不是root项目目录(build.gradle通常寿命(。我只是将项目转换为一个普通的gradle项目,而且效果很好。

最新更新