1
我想從Gradle Tooling運行的任務中獲取結果。我定義了ResultHandler,但是在方法onComplete(Object result)中我得到了空值。輸入gradle cR後,我得到如下輸出:Gradle ResultHandler返回null
:returnString UP-TO-DATE
BUILD SUCCESSFUL
Total time: 0.98 secs
Result received: null
:checkResult UP-TO-DATE
我該如何從我的任務「returnString()」中得到結果。 這是我的build.gradle:
import org.gradle.tooling.*
apply plugin: 'groovy'
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.3.3'
}
task returnString() {
return "STRING!"
}
task checkResult() <<{
GradleConnector connector = GradleConnector.newConnector();
connector.forProjectDirectory(new File("."));
ProjectConnection connection = connector.connect();
try {
// Configure the build
BuildLauncher launcher = connection.newBuild();
launcher.forTasks("returnString");
// Run the build
ResultLoader resultHandler = new ResultLoader()
launcher.run(resultHandler);
} finally {
// Clean up
connection.close();
}
}
class ResultLoader implements ResultHandler<Object>{
void onComplete(Object result){
println "Result received: "+ result.toString()
}
void onFailure(GradleConnectionException failure){
println failure
}
}
我期望在方法onComplete(..)中得到執行任務returnString()的結果,這是一個「STRING!」。所以輸出應該是「收到的結果:STRING!」。 這個例子被簡化以暴露ResultHandler問題。我想在不同位置的不同任務之間使用ResultHandler(跨越構建文件和項目) – 2014-09-12 12:19:23
1.您的「返回」STRING「在配置階段執行,而不是作爲任務操作的一部分! 2.由任務執行的操作沒有返回值。 http://www.gradle.org/docs/current/javadoc/org/gradle/api/Task.html - 它們使用'doFirst()'或'doLast()'添加,或者您可以使用'task name << {...}'語法。 3.開始另一個版本聽起來非常無效。我建議你仔細看看任務如何工作 - http://www.gradle.org/docs/current/userguide/more_about_tasks.html有關任務輸入和輸出的部分可以給你一些想法。 – Radim 2014-09-12 13:00:03