重新应用将任务从 build.gradle 移动到单独的 .gradle 文件时遇到问题



build.gradle文件中提取任务然后应用后返回到应用程序/根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'
    }
}

构建脚本闭包会将库添加到 Gradle 脚本的类路径上,您应该能够使用其类。

最新更新