아래 코드가 실패한 gradle 파일이 있습니다.
task wakeup
task dressup
task playMusic
task goRunning
//dependsOn(task)
wakeup <<{
println("I am awake,i need to go for a run")
}
dressup(dependsOn: wakeup)<<{
println("I am ready with my track suit")
}
playMusic(dependsOn: dressup)<<{
println("I have played track 7")
}
goRunning(dependsOn: playMusic)<<{
println("I am running")
}
오류:-
C:\Users\akathaku\Desktop\gradlelearning>gradle -q -b taskmethods.gradle goRunning
FAILURE: Build failed with an exception.
* Where:
Build file 'C:\Users\akathaku\Desktop\gradlelearning\taskmethods.gradle' line: 14
* What went wrong:
A problem occurred evaluating root project 'gradlelearning'.
> Could not find method dressup() for arguments [{dependsOn=task ':wakeup'}] on root project 'gradlelearning'.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
하지만 코드를 다음과 같이 변경하면 :-
//dependsOn(task)
task wakeup <<{
println("I am awake,i need to go for a run")
}
task dressup(dependsOn: wakeup)<<{
println("I am ready with my track suit")
}
task playMusic(dependsOn: dressup)<<{
println("I have played track 7")
}
task goRunning(dependsOn: playMusic)<<{
println("I am running")
}
완벽하게 실행됩니다. 일반적으로 작업을 선언하고 나중에 사용하면 작동하지만, DependOn 메서드를 사용하면 실패합니다. 왜?
dependsOn method
두 번째 예에서 분명히 작동하므로 문제가 아닙니다 .
문제는 task
작업 본문을 정의하려고 할 때 선언 이 누락 되어 있으므로 gradle이 그루비 코드를 메서드 호출로 해석한다는 것입니다. 의미, 당신이 쓸 때 :
dressup(dependsOn: wakeup)<<{
println("I am ready with my track suit")
}
Gradle은이를 작업으로 인식하지 않지만 매개 변수로 dressup(dependsOn: wakeup)
명명 된 메서드를 호출하려고 할 때 부분을 확인합니다 . 그러나 그러한 방법은 존재하지 않으며 오류가 발생합니다.dressup
{dependsOn: wakeup}
그렇기 때문에 항상 gradle에게 그것이 작업이라고 말해야합니다.
task dressup(dependsOn: wakeup)<<{
println("I am ready with my track suit")
}
두 번째 (그리고 성공적인) 예에 따라.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다