如何在自定义 类 中使用 buildscript 依赖项?

How to use buildscript dependencies in custom classes?

我在构建脚本中使用了几个助手 类,文件夹结构如下所示

buildSrc    
  -src   
     -main    
       -groovy
           GitUtils.groovy
build.gradle

在 GitUtils 中,我试图导入自定义库中使用的几个 类(本例中来自 grgit 和 http-builder)。但它不起作用,我得到 "Unable to resolve class XXX" 异常。如果这些 类 在 build.gradle.

中,则可以很好地解析它们

build.gradle的相关部分:

buildscript {    
  repositories {
    jcenter()
    mavenCentral()
  }
  dependencies {
    classpath 'org.ajoberstar:grgit:1.3.0'
    classpath 'org.codehaus.groovy.modules.http-builder:http-builder:0.7.1'
  }
}

dependencies {
  compile 'org.ajoberstar:grgit:1.3.0'
  compile 'org.codehaus.groovy.modules.http-builder:http-builder:0.7.1'
}

...
GitUtils.doStuff();

由于您的 buildSrc class 在 groovy 中,请确保您的 build.gradle 中包含以下内容:

apply plugin: 'groovy'

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.2.1'
}

干净的解决方案是在 buildSrc/build.gradle 文件中声明 GUtils 中的依赖项:

apply plugin:'groovy'

repositories {
  jcenter()
  mavenCentral()
}
dependencies {
  compile gradleApi()
  compile 'org.ajoberstar:grgit:1.3.0'
  compile 'org.codehaus.groovy.modules.http-builder:http-builder:0.7.1'
}