【问题标题】:Trouble moving tasks from build.gradle into separate .gradle file be reapplied无法将任务从 build.gradle 移动到单独的 .gradle 文件中重新应用
【发布时间】:2017-03-19 23:51:27
【问题描述】:

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 中的其他插件不同的方式包含脚本?

【问题讨论】:

    标签: java android gradle build.gradle apache-commons


    【解决方案1】:

    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 脚本的类路径中,您应该能够使用它的类。

    【讨论】:

      猜你喜欢
      • 2015-05-24
      • 2016-12-02
      • 2015-12-02
      • 2014-03-27
      • 2020-07-15
      • 1970-01-01
      • 2012-10-13
      • 2018-03-02
      • 1970-01-01
      相关资源
      最近更新 更多