6

我编写的一定数量的 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"
}

这导致以下输出:

:gradle backupFile
:backupFile UP-TO-DATE

有没有办法强制执行(ny)任务,不管任何事情?如果有,是否也可以切换任务执行(例如,告诉构建脚本运行哪些任务以及忽略哪些任务)?

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

非常感谢您的意见。

4

2 回答 2

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"
    }
}    
于 2013-05-03T12:06:38.220 回答
0

我已经尝试这样做很多天了。我必须在 processResource 步骤上创建许多中间 jar。需要在 processResource 步骤上创建以下一个。

processResources.dependsOn(packageOxygenApplet)  //doesn't work

task packageOxygenApplet (type: Jar) {

    println '** Generating JAR..: ' + rsuiteOxygenAppletJarName
        from(sourceSets.main.output) {
            include "org/worldbank/rsuite/oxygen/**"
        }
        baseName = rsuiteOxygenAppletJarName

        manifest {
            attributes("Build-By": oxygenUsername,
                "Specification-Title": "Oxygen World Bank Plugin")
        }
        destinationDir = file("src/main/resources/WebContent/oxygen")

}
于 2014-08-26T14:46:53.490 回答