无法将任务从 build.gradle 移动到单独的 .gradle 文件中重新应用

Trouble moving tasks from build.gradle into separate .gradle file be reapplied

运行 遇到从 build.gradle 文件提取任务的问题,然后将其应用回 app/root build.gradle 文件。编译器可以很好地解析 MarkupBuilderJsonSlurper 但无法解析以下内容:import org.apache.commons.lang.StringEscapeUtils.

我已经尝试将它添加为新创建的脚本以及应用程序和项目级别中的依赖项。

'org.apache.commons.lang:commons-lang:3.5'

错误如下

Could not compile script '/project/app/newscript.gradle'.
 startup failed:
 > script '/project/app/newscript.gradle': 18: unable to resolve class org.apache.commons.lang.StringEscapeUtils
   @ line 18, column 1.
     import org.apache.commons.lang.StringEscapeUtils
     ^

  1 error

我是做错了什么还是这不可能?我是否需要以不同于 apply script: newscript.gradlenewscript.gradle 中的其他插件的方式包含脚本?

Gradle 脚本基本上是一个 Groovy 文件。它又被编译成 JVM 字节码,类似于 Java 类。因此,当使用导入编译脚本时,导入的 类 必须在类路径中。一些 类 像 MarkupBuilder 是默认可用的(由 Groovy 或 Gradle 包含)。

您必须添加类似这样的内容才能在脚本中使用 类:

import org.apache.commons.lang.StringEscapeUtils;

buildscript {
    repositories {
        mavenCentral();
    }
    dependencies {
        classpath 'org.apache.commons.lang:commons-lang:3.5'
    }
}

buildscript 闭包会将库添加到 Gradle 脚本的类路径中,您应该可以使用它的 类.