如何用dofirst / dolast扩展gradle war任务

时间:2016-09-22 15:44:13

标签: gradle war

我需要使用一些doFirst和doLast命令扩展gradle war任务,以便在生产状态下编译我的sencha前端。

我知道要扩展一个我需要添加task.doFirst {}的任务,但这不适用于war。我使用其他任务做了一些测试,比如

clean {
    doFirst {
        println "test"
    }
}

这是有效的...但战争不是

war {
    doFirst {
        println "test"
    }
}

我的主要想法是从src/main/webapp列表中删除from并执行sencha-cmd sencha app build -c --destination $war/ production

1 个答案:

答案 0 :(得分:1)

您应该使用自己的输入/输出为sencha编译创建单独的任务,以便Gradle可以执行最新的检查(因此如果不必要,可以跳过它)。然后,您可以通过DAG

将任务连接到Gradle Task.dependsOn(...)
task compileSencha(type:Exec) {
    inputs.dir 'src/main/sencha'
    outputs.dir "$buildDir/sencha"
    commandLine 'sencha', 'app', 'build', file('src/main/sencha').absolutePath, file("$buildDir/sencha").absolutePath
}

war {
   from "$buildDir/sencha"
   dependsOn compileSencha
}