【问题标题】:Gradle: how to move outputs of a task?Gradle:如何移动任务的输出?
【发布时间】:2017-02-15 20:20:41
【问题描述】:

我在 build.gradle 中设置了buildDir,除了一个插件之外的所有插件都支持该设置。对于坚持创建build/reports/license/ 并将其输出放在那里的人,我想将这些文件移动到我的${buildDir}

我尝试在任务中添加一个doLast

downloadLicenses {
    // ...
    doLast {
        file("build/reports/license").renameTo("${buildDir}/reports");
    }
}

但 Gradle 抱怨

在根项目“myProject”上找不到参数 [build_3s5ts0z1u2ed2z2xpd2pa56i$_run_closure50$_closure144@4d98efa4] 的方法 doLast()。

我在这里缺少什么以及任务完成后如何移动文件?

编辑:有问题的插件是License Gradle Plugin,我做了report this as a bug。在正式修复之前,我希望有一个解决方法。

【问题讨论】:

    标签: gradle


    【解决方案1】:

    这是什么插件?

    试试下面的

    println downloadLicenses.class.name
    

    这是打印任务的名称吗?我猜有一个名为 downloadLicenses 的扩展对象,而不是一个任务

    假设有一个 downloadLicenses 任务被 downloadLicenses 扩展对象“隐藏”,这应该可以工作

    tasks.getByName('downloadLicenses').doLast { ... } 
    

    如果“build”目录是硬编码的,你应该向插件的作者提出问题

    【讨论】:

    • 谢谢,将tasks.getByName('downloadLicenses') 放在doLast 块的前面downloadLicenses 解决了这个问题。
    【解决方案2】:

    我不确定我是否理解您的问题,但是,如果您想将文件移动到 ${buildDir}/reports,我认为这应该是您的 doLast 块:

    doLast {
        file("build/reports/license").renameTo(file("${buildDir}/reports"));
    }
    

    希望能帮到你!

    【讨论】:

    • 嗯,是的,我也是这么想的,但这让我遇到了上述错误。
    • 即使在第二个路径之前使用文件,您是否也会收到相同的错误?因为在你的第一篇文章中没有。
    • 是的,我愿意...如果是关于 file(...) 的错误可能会非常不同。 Gradle 不喜欢doLast
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多