시작해볼까요?
Gradle 들어본 적 있나요? 개발하다 보면 반복되는 작업이 너무 많아서 귀찮을 때가 있죠. 그럴 때 정말 유용한 게 바로 build automation tool인데, Gradle이 딱 그 역할을 해줍니다. 특히 multi-module project를 관리할 때 필수라고 할 수 있어요. 유지보수도 편리해지고, 확장도 쉽고요. 오늘은 Gradle에서 task를 다루는 방법을 가볍게 살펴볼게요!
Multi-Module Project에서 Task를 어떻게 관리할까?
Gradle 프로젝트를 보면 root project 아래 여러 개의 subproject(module)가 있습니다. 각각 따로 설정하면 관리가 너무 복잡해지죠. 그런데, Gradle을 잘 활용하면 이런 문제를 한방에 해결할 수 있어요.
Gradle Project에서 어떤 Task를 사용할 수 있을까?
우선, 현재 프로젝트에서 실행할 수 있는 task들을 확인하는 방법부터 알려드릴게요.
- 터미널을 열고 프로젝트 폴더(예:
coupon-app
)로 이동하세요. - 아래 명령어를 입력하세요:
gradle tasks --all
그러면 root project와 subproject에서 실행 가능한 모든 task 목록이 나옵니다. Java compilation, War, Tomcat 관련 task 같은 것도 포함될 거예요.
특정 Subproject의 Task만 확인하고 싶다면?
특정 subproject(예: services
)의 task만 보고 싶다면 해당 폴더로 이동한 후:
gradle tasks --all
이렇게 실행하면 돼요. 예를 들어, web project가 아니라면 Tomcat이나 WAR task는 안 보일 거예요. 반면, web project에서는 Tomcat과 WAR task가 나타나겠죠? 왜냐하면 War plugin이 Java plugin을 포함하고 있기 때문입니다.
직접 Gradle Task 만들어 보기
이제 직접 Gradle task를 하나 만들어볼까요? 이번에는 프로젝트 이름을 출력하는 간단한 task를 추가해보겠습니다.
1단계: build.gradle
파일에 Task 추가하기
Gradle 설정 파일(coupon-app
프로젝트 폴더 안에 있어요)을 열고 다음 코드를 넣어주세요.
task printProjectName {
doLast {
println "Current Project: ${project.name}"
}
}
2단계: Task 실행하기
이제 아래 명령어를 실행하면:
gradle printProjectName
출력 결과는 이렇게 나옵니다:
Current Project: coupon-app
3단계: Subproject에서 실행하면?
그럼 web
subproject에서 같은 명령어를 실행하면 어떻게 될까요?
gradle printProjectName
안타깝게도 오류가 날 거예요. 왜냐하면 이 task는 root project에서만 정의되었거든요.
모든 Subproject에서 Task 적용하기
이 task를 subproject에서도 실행하고 싶다면 build.gradle
파일을 이렇게 수정하세요:
allprojects {
task printProjectName {
doLast {
println "Current Project: ${project.name}"
}
}
}
이제 gradle :web:printProjectName
을 실행하면:
Current Project: web
web project에서도 동일한 task를 실행할 수 있습니다!
Root Project 제외하고 Subproject에서만 실행하기
혹시 root project에서는 실행되지 않고, subproject에서만 실행되도록 하고 싶다면? allprojects
대신 subprojects
를 사용하면 됩니다.
subprojects {
task printProjectName {
doLast {
println "Current Project: ${project.name}"
}
}
}
이제 root project에서 gradle printProjectName
을 실행해도 아무 반응이 없어요. 대신 gradle :services:printProjectName
을 실행하면:
Current Project: services
정상적으로 실행되겠죠?
특정 Subproject에서만 실행하고 싶다면?
Gradle에서는 특정 subproject에서만 task를 실행할 수도 있습니다. 예를 들어, web
module에서 clean
task를 실행하려면:
gradle :web:clean
이렇게 하면 web
project에서만 clean
task가 실행됩니다. 다른 프로젝트는 그대로 유지됩니다.
마무리하며
Gradle의 multi-module project에서 task를 잘 활용하면 시간을 엄청 절약할 수 있어요. 오늘 배운 내용 정리해볼까요?
gradle tasks --all
명령어로 사용 가능한 task를 확인할 수 있어요.build.gradle
에서task
와doLast
를 활용해 원하는 task를 만들 수 있어요.allprojects {}
를 사용하면 모든 project에서 task가 실행되도록 설정할 수 있어요.subprojects {}
를 사용하면 subproject에서만 task가 적용되도록 할 수 있어요.gradle :subproject_name:task_name
형식으로 특정 subproject에서만 task를 실행할 수 있어요.
이제 Gradle을 더 능숙하게 활용해서 개발 속도를 높여보세요! 다음 강의에서는 root project에서 공통 설정을 한곳에서 관리하는 방법을 알아볼 거예요.
'SW > Gradle' 카테고리의 다른 글
Gradle: Properties 쉽게 정리하기 | Subproject 설정과 빌드 최적화 (0) | 2025.02.19 |
---|---|
Gradle: subproject 빌드 로직 한 번에 정리, 예제, 방법 (0) | 2025.02.18 |
Gradle: 멀티 모듈 프로젝트 쉽게 배우기! (0) | 2025.02.16 |
Gradle: 쉽고 재밌게 배우는 멀티 모듈 Gradle 프로젝트 (0) | 2025.02.15 |
Gradle: 다중 모듈(Java) 애플리케이션 만들기 : 예제, 방법 (0) | 2025.02.14 |