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

标签 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'
}

最佳答案

我在这里看到了很多问题。

  1. buildscript 不控制插件实现的依赖项。
  2. 使用 plugins {} DSL block 来应用插件。这是首选方式:https://docs.gradle.org/current/userguide/plugins.html#sec:plugins_block
  3. 应该使用implementation而不是compile,因为compile已被弃用,如https://docs.gradle.org/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'
}

关于java - 无法在自定义 gradle 插件实现中使用外部依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56841539/

相关文章:

groovy - gradle文件中ext和code block的含义

java - grpc-java的bindableService问题

spring-mvc - 当使用带有 @Grab 的 Groovy 脚本时,为什么带有 slf4j-nop 的 SLF4J 会输出 StaticLoggerBinder 警告

java - Ratpack:如何从类路径渲染文件?

gradle - 无法在空对象上调用方法registerTransform()

groovy - 无效的文字/长度代码-如何解决此问题?

java - Itext 7 - 将文本放置在段落中时出现不需要的底部边距

java - 多代理开发方面的普通 Java 与 JADE 框架

java - 如何使用 Java 8 将方法传递给注释?

java - 使用 Java 模式的字符串定界符