Gradle #3 - settings.gradle 파일 용도
Gradle 시리즈
글 요약
-
settings.gradle
파일을 통해 subProject를 생성할 수 있다. -
project 구조를 확인하기 위해선
./gradlew projects
명령어를 사용한다. -
subProject 안에는 빌드를 수행하기 위한
build.gradle
파일과src
디렉터리가 있다. -
subProject를 생성하기 위해선
settings.gradle
파일 안에include('프로젝트 명')
을 추가한다. -
그 이후 subProject 이름의 디렉터리를 생성한 후
src
와build.gradle
파일을 해당 디렉터리에 넣는다. -
./gradle :<subPorject명>:<task명>
을 입력하면 subProject에서 지원 가능한 task 목록이 나타난다.
🔎 Gradle 파일 살펴보기
Gradle에서 살펴볼 파일은 gradle.build
파일과 settings.gradle
입니다. 이 글에서는 해당 프로젝트의 큰 숲을 보기 위해 settings.gradle
파일을 살펴봅니다.
🩻 settings.gradle 구조
settings.gradle
파일을 훑어보면 아래와 같이 나타나 있습니다. 일단, 플러그인 부분은 생략한 채로 설명드리겠습니다. gradle-example
이 현재 수행하고 있는 rootProject
명이며, include('lib')
부분이 gradle-example subProject
인 lib
프로젝트 입니다.
plugins {
// Apply the foojay-resolver plugin to allow automatic download of JDKs
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.7.0'
}
rootProject.name = 'gradle-example'
include('lib')
🤝🏻 rootProject와 subProject의 관계
rootProject와 subProject의 관계는 아래의 이미지1 처럼 구성되어 있습니다. 각 subProject 마다 build.gradle 파일이 있음을 주목해주세요.
📜 subProject 목록 확인
subProject가 존재하는지 확인하기 위해서는, ./gradlew projects
명령어를 입력하여 확인합니다. 이전 포스팅에서 생성한 프로젝트는 lib
이름의 subProject가 존재하는 것을 알 수 있습니다.
fromitive@dev:~/practice/gradle-example$ ./gradlew projects
> Task :projects
------------------------------------------------------------
Root project 'gradle-example'
------------------------------------------------------------
Root project 'gradle-example'
+--- Project ':lib'
To see a list of the tasks of a project, run gradlew <project-path>:tasks
For example, try running gradlew :lib:tasks
⚙️ subProject가 지원하는 task 확인
./gradlew로 subProject가 지원하는 task 목록을 확인하기 위해선 ./gradlew :<subProject 명>:tasks
를 입력하면 됩니다.
subProject 단독으로 task를 실행하기 위해선 ./gradlew :<subProject 명>:<task명>
을 입력하면 되겠습니다.
romitive@dev:~/practice/gradle-example$ ./gradlew :lib:tasks
> Task :lib:tasks
------------------------------------------------------------
Tasks runnable from project ':lib'
------------------------------------------------------------
(..생략..)
🌟 subProject 생성하기
rootProject에서 subProject를 추가해 봅니다.
1️⃣ settings.gradle에 include 문구 추가
settings.gradle
에 include
문구를 아래와 같이 추가합니다. include에 들어갈 문구는 subProject 명이 됩니다. 아래의 예제의 추가 할 프로젝트 명은 moosong
입니다.
./gradlew projects
명령어를 입력하면 아래와 같이 moosong
이름의 subProject가 추가 되었음을 알 수 있습니다.
fromitive@dev:~/practice/gradle-example$ ./gradlew projects
(..생략..)
Root project 'gradle-example'
+--- Project ':lib'
\--- Project ':moosong'
./gradlew :moosong:tasks
를 입력하면, 아직 moosong
디렉터리와 build.gradle
파일이 없어 help 관련 task
만 지원하고 있습니다.
fromitive@dev:~/practice/gradle-example$ ./gradlew :moosong:tasks
> Task :moosong:tasks
------------------------------------------------------------
Tasks runnable from project ':moosong'
------------------------------------------------------------
Help tasks
----------
(..생략..)
2️⃣ subProject 디렉터리 생성
rootProject인 gradle-example
디렉터리 안에 moosong
디렉터리를 생성한 후 lib
디렉터리의 src
와 build.gradle
을 복사해 줍니다. 작업이 완료되면 아래와 같은 디렉터리 구조가 완성됩니다.
.
(..생략..)
├── 📁 moosong
│ ├── 📄 build.gradle
│ └── 📁 src
│ ├── main
│ └── test
(..생략..)
✅ subProject task 실행
./gradlew :moosong:tasks
를 입력하면 이전과는 다르게 여러 개의 task들이 생긴 것을 확인할 수 있습니다. 정확히는 lib
디렉터리의 task
와 동일한 내용이 지원됩니다. 그 이유는 moosong 디렉터리의 build.gradle 파일이 lib 디렉터리의 build.gradle과 동일하기 때문입니다.
> Task :moosong:tasks
------------------------------------------------------------
Tasks runnable from project ':moosong'
------------------------------------------------------------
Build tasks
-----------
(..생략..)
Documentation tasks
-------------------
(..생략..)
Help tasks
----------
(..생략..)
Verification tasks
------------------
(..생략..)
-
이미지 출처 : https://docs.gradle.org/current/userguide/part1_gradle_init.html ↩