我在Gradle(2.3)
中有自定义任务task myCustomTask (dependsOn: [ jacocoTestReport ]) << {
//Adding this didn't work, gives an error that options is not a property.
//options.compilerArgs = ["-x compileJava -x classes -x test -x testClasses"]
//Seems like the following line actually works!!! but still errors for "options" property. Strange!!
//myCustomTask.options = [ "-x compileJava -x classes -x test -x testClasses" ]
//..
//...some...operation
//..
}
如何在Gradle中更改上述自定义任务代码,以便它可以执行我在命令行中执行的操作。我希望当有人调用myCustomTask时,如果它依赖于任何Gradle的核心任务(如compileJava,类等),那么它就不应该调用那些任务(即模仿 -x someTask 在命令行中的行为。)
以下作品!!
$ gradle jacocoTestReport -x compileJava -x classes -x test -x testClasses
然后,我想要的是:运行 gradle myCustomTask 应该这样做(命令行上面的命令正在做什么)。
错误:
:compileJava UP-TO-DATE
:compileGroovy UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jacocoTestReport
:myCustomTask FAILED
FAILURE: Build failed with an exception.
* Where:
Initialization script '/home/giga/gradle-2.3/init.d/extra1.common-thids.gradle' line: 450
* What went wrong:
Execution failed for task ':myCustomTask'.
> No such property: options for class: org.gradle.api.DefaultTask_Decorated
Possible solutions: actions
extra1..gradle文件(init.d级文件)上的cat -n :
449 task myCustomTask (dependsOn: [ jacocoTestReport ]) << {
450 myCustomTask.options = [ " -x compileJava -x classes -x test -x testClasses " ]
451 }
答案 0 :(得分:0)
我认为这就是你想要的:
我认为您最好的选择是mustRunAfter
而不是dependsOn
:https://docs.gradle.org/2.3/userguide/more_about_tasks.html#sec:ordering_tasks
task myCustomTask() {
mustRunAfter jacocoTestReport
doLast {
...
}
}
如果切换到mustRunAfter
,
运行测试并立即使用JaCoCo报告。 Gradle将确保myCustomTask
在JaCoCo报告任务之后运行,因此您可以确保您的自定义任务看到最新的JaCoCo输出:
gradle jacocoTestReport myCustomTask
使用先前生成的JaCoCo报告。 jacocoTestReport
不是myCustomTask
的依赖项,因此jacocoTestReport
及其所依赖的任务不会添加到任务图中,也不会被运行。只会运行myCustomTask
:
gradle myCustomTask