Gradle에서 `dependsOn`을 사용하는 방법은 무엇인가요?
_____A: `dependsOn`은 하나의 Gradle 태스크가 다른 태스크 실행을 의존하도록 설정하는 속성입니다. 즉, 특정 태스크를 실행하기 전에 반드시 다른 태스크가 먼저 실행되도록 만듭니다.
---
Q: `dependsOn`을 어떻게 사용하나요?
A: Gradle 빌드 스크립트(build.gradle) 내에서 태스크를 정의할 때, 다음과 같이 사용합니다.
```groovy
task taskA {
doLast {
println 'Task A 실행'
}
}
task taskB {
dependsOn taskA
doLast {
println 'Task B 실행'
}
}
```
위 예제에서 `taskB`를 실행하면 자동으로 `taskA`가 먼저 실행된 후 `taskB`가 실행됩니다.
---
Q: `dependsOn`에 여러 태스크를 지정할 수 있나요?
A: 네, 가능합니다. 여러 태스크 이름 또는 태스크 참조를 리스트 형태로 지정할 수 있습니다.
```groovy
task taskC {
doLast { println 'Task C 실행' }
}
task taskD {
dependsOn taskA, taskC
doLast { println 'Task D 실행' }
}
```
`taskD` 실행 시 `taskA`와 `taskC`가 먼저 실행됩니다.
---
Q: 문자열로 태스크 이름을 지정해도 되나요?
A: 네, 가능합니다.
```groovy
dependsOn 'taskA', 'taskC'
doLast { println 'Task E 실행' }
}
```
---
Q: `dependsOn` 으로 정의된 태스크 순서는 어떻게 되나요?
A: `dependsOn`에 지정된 태스크들은 병렬이 아닌 순차적으로 실행되나, 순서가 명확히 보장되지는 않습니다. 만약 실행 순서가 중요한 경우, `mustRunAfter` 나 `finalizedBy`를 함께 사용해 제어하는 것이 좋습니다.
---
Q: `dependsOn`을 동적으로 추가할 수 있나요?
A: 네, 런타임 중에도 `dependsOn`에 태스크를 추가할 수 있습니다.
```groovy
task taskF {
doLast { println 'Task F 실행' }
}
task taskG {
doLast { println 'Task G 실행' }
}
taskH.dependsOn taskF
taskH.dependsOn taskG // 여러 번 추가 가능
```
---
Q: `dependsOn`과 `finalizedBy`의 차이는 무엇인가요?
A:
- `dependsOn` : 해당 태스크 실행 전 반드시 실행되어야 할 태스크를 지정합니다.
- `finalizedBy` : 해당 태스크가 실행 완료 후 항상 실행되어야 하는 태스크를 지정합니다.
즉, `dependsOn`은 선행 조건, `finalizedBy`는 후행 조건입니다.
---
Q: `dependsOn` 사용 시 주의할 점이 있나요?
A:
- 순환 의존성(태스크 A가 B에, B가 A에 `dependsOn`)을 만들지 않도록 주의하세요. Gradle이 오류를 발생시킵니다.
- 너무 많은 `dependsOn`으로 인해 빌드 시간이 늘어날 수 있습니다.
- 빌드 스크립트 구조를 명확히 하여 가독성을 높이도록 합니다.
---
요약 :
`dependsOn`은 Gradle 태스크 간 실행 순서를 강제하는 기본적인 방법입니다. 태스크 실행 전 반드시 의존 태스크들이 선행 실행되도록 설정할 때 사용하며, 태스크 이름 또는 참조를 통해 지정 가능합니다.
작성자:
박지후 [비회원]
| 작성일자: 1년 전
2025-01-01 07:51:42
조회수: 139 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 139 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.