gradle - 如何只在gradle中使用基本的Groovy脚本?

标签 gradle

所以,我有以下似乎现在正在按需工作的

task deleteJars(type: Delete) {
    ext.collection = files { genLibDir.listFiles() }
    delete ext.collection
}

task copyJars(type: Copy) { 
    from(configurations.compile) {}
    from(fixedLibDir) {}
    into genLibDir
}

copyJars.dependsOn('deleteJars')

我有几个问题
  • 是否有一种更简便的方法将gradle方法写入一个函数中?
  • 以前,我有以下内容,但似乎总是执行复制功能,而不是在执行copyJars任务时执行?
  • 如何在任务中编写简单的代码(例如,删除文件,复制文件等),以便在依赖该任务时它可以正确运行?

  • 我可怕的尝试是在任务依赖时执行常规操作(但是不幸的是,无论我选择了哪个目标并每次运行都运行了)。
    task('copyJars') { 
        ext.collection = files { genLibDir.listFiles() }
        delete ext.collection
        copy { from configurations.compile into genLibDir }
        copy { from fixedLibDir into genLibDir }
    }
    

    因此,我的主要问题是如何在任务中编写常规脚本,使其仅在该任务运行时运行? (我以为上面的代码是古怪的脚本,但似乎每次都运行)

    谢谢,
    院长

    最佳答案

    Gradle构建分三个阶段进行:初始化,配置和执行。构建脚本中的大多数代码都在配置阶段进行评估,这与最终将运行哪些任务无关。 (只有知道了所有任务及其依赖项后,才在配置阶段的最后确定要运行的任务。)要添加在任务执行时和任务执行时(即在执行阶段)运行的代码,您可以使用doFirstdoLast向任务添加所谓的任务 Action 。例如:

    task copyJars {
        doLast { /* put any Groovy code here */ }
    }
    

    您可以在Gradle User Guide中了解有关这些概念的更多信息。

    关于gradle - 如何只在gradle中使用基本的Groovy脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12289876/

    相关文章:

    android - Android Studio 中的 Gradle 错误 : Plugin with id 'com.android.library' not found

    android - 找不到参数 [com.android.volley.tests] 的方法 testPackageName()

    android - Gradle 依赖 : How to figure out what's causing this duplication

    android - Android Studio许可证未被接受错误

    Gradle 在根项目上找不到方法,但我正在使用子项目

    windows - Gradle:无法连接到 Windows 上的 Kotlin 守护进程

    cassandra - Gradle插件来执行CQL3脚本

    android - Gradle 在 UI 中标记错误,但构建得很好

    android - Gradle插件defaultDependencies jar以编程方式

    java - Gradle Milestone 5 显示关于遗失 Artifact 的错误 *#*!*.*