Gradle에서 태스크의 의존성을 설정하는 방법은 무엇인가요?
_____A: 태스크 의존성이란 특정 태스크가 실행되기 전에 반드시 실행되어야 하는 다른 태스크들을 지정하는 것을 말합니다. 이를 통해 태스크 실행 순서를 정의할 수 있습니다.
Q: Gradle에서 태스크 간 의존성을 설정하는 기본 방법은 무엇인가요?
A: 태스크 객체의 `dependsOn` 프로퍼티를 사용하여 의존 태스크를 지정합니다. 예를 들어, `taskB.dependsOn(taskA)`는 `taskB`가 실행되기 전에 `taskA`가 실행되도록 합니다.
Q: `dependsOn`을 Gradle 스크립트에서 어떻게 작성하나요?
A: 아래와 같이 사용합니다.
```groovy
task taskA {
doLast {
println 'Executing taskA'
}
}
task taskB {
dependsOn taskA
doLast {
println 'Executing taskB'
}
}
```
Q: 여러 개의 태스크를 의존하도록 설정할 수 있나요?
A: 네, `dependsOn`에 리스트(컬렉션)를 지정할 수 있습니다.
```groovy
task taskC {
dependsOn taskA, taskB
}
```
Q: `mustRunAfter`와 `shouldRunAfter`는 무엇인가요?
A:
- `mustRunAfter`는 태스크 간 실행 순서는 보장하지만, 명시적 의존성은 없습니다. 즉, 두 태스크 모두 호출될 때 실행 순서만 조정합니다.
- `shouldRunAfter`는 권장 실행 순서지만, 충돌 시 무시될 수 있습니다.
Q: 예를 들어 `mustRunAfter`를 어떻게 사용하나요?
A:
```groovy
task taskB {
mustRunAfter taskA
}
```
`taskB`가 실행될 때 `taskA` 이후에 실행되도록 권장하지만, `taskB.dependsOn taskA`는 아니므로 `taskB`를 단독 실행하면 `taskA`는 실행되지 않습니다.
Q: 태스크 의존성 설정 시 주의점이 있나요?
A:
- 순환 의존성(Circular dependencies)을 피해야 합니다.
- 의존 태스크가 없거나 공개되지 않으면 의존성이 무시될 수 있습니다.
- 동적으로 태스크를 생성하는 경우 `dependsOn` 시점을 적절히 설정해야 합니다.
Q: Kotlin DSL을 사용할 때는 어떻게 작성하나요?
A:
```kotlin
tasks.register("taskA") {
doLast {
println("Executing taskA")
}
}
tasks.register("taskB") {
dependsOn("taskA")
doLast {
println("Executing taskB")
}
}
```
Q: 태스크 이름 대신 태스크 객체를 `dependsOn`에 넣어도 되나요?
A: 네, `dependsOn`은 태스크 이름(String), 태스크 객체(Task), 또는 둘의 컬렉션 모두를 받을 수 있습니다.
Q: 프로젝트 간 태스크 의존성은 어떻게 설정하나요?
A: 하위 프로젝트 태스크에 의존할 때는 `"subProjectName:taskName"` 식으로 태스크 이름을 지정합니다. 예:
```groovy
task myTask {
dependsOn ':subProject:compileJava'
}
```
작성자:
정수현 [비회원]
| 작성일자: 1년 전
2025-01-01 07:51:42
조회수: 187 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 187 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.