首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分级任务从来都不是最新的。

分级任务从来都不是最新的。
EN

Stack Overflow用户
提问于 2016-01-14 09:33:37
回答 1查看 1.7K关注 0票数 1

在任务的配置阶段,我将一些dir注册为builtBy: thisTask。我希望gradle能够自动检测源是否被更改,但是任务总是被执行。

以下是一项任务:

代码语言:javascript
复制
subprojects {

    def srcMainMirah = file('src/main/mirah')
    if (srcMainMirah.exists()) {

        idea.module.sourceDirs += srcMainMirah

        task compileMirah {

            def classesMirahMain = file("$buildDir/classes-mirah/main")

            inputs.sourceDir srcMainMirah
            def thisTask = delegate
            sourceSets.main {
                output.dir(classesMirahMain, builtBy: thisTask)
                java.srcDir srcMainMirah
            }
            dependsOn tasks.compileJava

            doFirst {
                def classpath = files("$buildDir/classes/main").plus(configurations.compile)
                mirahc(srcMainMirah, classesMirahMain, classpath)
            }
        }
    }
}

它用于用mirah语言编译源代码,它生成*.class文件,就像java编译器一样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-19 00:52:54

单独声明任务的输入不足以确定任务是否是最新的。您也需要声明task.outputs

没有定义输出的任务永远不会被认为是最新的。对于任务的输出不是文件的场景,或者对于更复杂的场景,TaskOutputs.upToDateWhen()方法允许您以编程方式计算任务是否应该是最新的。 只有定义了输出的任务将被视为最新的,如果这些输出是不变的,自上一次构建。

来自第17.9.1节

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34785969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档