在Gradle中强制执行任务

Pie*_*VDE 6 gradle build.gradle

我写的一定数量的Gradle任务,不需要任何输入或输出.因此,UP-TO-DATE当我调用它们时,这些任务总是会得到状态.一个例子:

task backupFile(type: Copy) << {
    //Both parameters are read from the gradle.properties file
    from file(adjusting_file.replaceAll("\"", "")) 
    into file(backupDestinationDirectory + "/main/")

    println "[INFO] Main file backed up"
}
Run Code Online (Sandbox Code Playgroud)

这导致以下输出:

:gradle backupFile
:backupFile UP-TO-DATE
Run Code Online (Sandbox Code Playgroud)

有没有办法迫使(ny)任务执行,无论什么事情?如果有,是否也可以切换任务执行(例如告诉构建脚本运行哪些任务以及忽略哪些任务)?

我不能省略<<标签,因为这会使任务总是执行,这不是我想要的.

非常感谢您的投入.

Pet*_*ser 10

必须在配置阶段配置任务.但是,您在任务操作(<< { ... })中进行配置,该操作在执行阶段运行.因为您要配置任务太晚,Gradle会确定它无所事事并打印UP-TO-DATE.

以下是正确的解决方案.同样,我建议使用doLast而不是<<因为它导致更规则的语法,并且不太可能意外地添加/省略.

task backupFile(type: Copy) {
    from file(adjusting_file.replaceAll("\"", "")) 
    into file(backupDestinationDirectory + "/main/")
    doLast {
        println "[INFO] Main file backed up"
    }
}    
Run Code Online (Sandbox Code Playgroud)