0
我已將Checkstyle檢查添加到我的Gradle實體中。 配置是:Gradle:自定義任務只執行一次
checkstyle {
configFile = new File("${project.projectDir}/config/checkstyle/sun_checks.xml")
showViolations = false
}
checkstyleMain {
doLast{
println("checkstyle main")
project.ext.checkType = "main"
tasks.checkstyleReport.execute()
}
}
checkstyleTest {
doLast{
println("checkstyle test")
project.ext.checkType = "test"
tasks.checkstyleReport.execute()
}
}
task checkstyleReport{
checkstyleReport.outputs.upToDateWhen { false }
}
checkstyleReport << {
logger.info("Producing checkstyle html report")
final source = "${project.projectDir}/build/reports/checkstyle/${project.checkType}.xml"
final xsl = "${project.projectDir}/config/checkstyle/checkstyle-simple.xsl"
final output = "$buildDir/reports/checkstyle/${project.checkType}.html"
println(source)
println(xsl)
println(output)
ant.xslt(in: source,
style: xsl,
out: output
)
}
當我調用:
gradle --daemon clean checkstyleMain checktyleTest
輸出是:
...
:clean
:compileJava
:processResources
:classes
:checkstyleMain
checkstyle main
/<root_path_here>/build/reports/checkstyle/main.xml
/<root_path_here>/config/checkstyle/checkstyle-simple.xsl
/<root_path_here>/build/reports/checkstyle/main.html
:compileTestJava
:processTestResources
:testClasses
:checkstyleTest
checkstyle test
正如你看到的,checkstyleReport任務被調用了兩次,但產生的輸出只有一次。我甚至試過outputs.upToDateWhen { false }
但它不起作用。
非常感謝您的幫助。
謝謝。但如果其中一項任務失敗呢?如何在任何情況下執行取決於失敗任務的自定義任務? – StKiller
現在你可以設置'checkstyle.ignoreFailures = true'。 Gradle 1.7(或1.8)將爲此問題引入一個通用解決方案(*終結器任務*)。 –