Gradle #2 - gradle이 지원하는 명령어
Gradle 시리즈
글 요약
-
Gradle 프로젝트를 생성하게 되면 2개의 중요한 파일인
settings.gradle
파일과build.gradle
파일이 생성된다. -
Gradle에서 사용 가능한 task 목록을 확인하기 위해선
./gradlew tasks
명령어를 입력한다. -
Gradle에서 프로젝트를 컴파일하기 위해선
./gradlew build
명령어를 입력한다. -
Gradle에서 컴파일 된 파일을 정리하기 위해선
./gradlew clean
명령어를 입력한다.
🌲 Gradle 프로젝트 구조
이전 포스트에서 생성한 프로젝트의 디렉터리 구조는 아래와 같습니다.
📁 gradle-example
├── 📄.gitattributes
├── 📄.gitignore
├── 📁 gradle
│ └── 📁 wrapper
├── 📁 .gradle
│ ├── (..생략..)
├── 📄 gradlew
├── 📄 gradlew.bat
├── 📁 lib
│ ├── 📄 build.gradle
│ └── 📁 src
└── 📄 settings.gradle
📋 주요 파일 및 디렉터리 설명
주요 파일과 디렉터리에 대한 설명은 아래와 같습니다. 특히 build.gradle 파일 및 settings.gradle 파일은 프로젝트 빌드 시 참고하는 제일 중요한 파일입니다.
이름 | 역할 |
---|---|
📄.gitattributes | git commit 후 Github와 같은 외부 저장소에 저장할 때 파일의 속성을 어떻게 할 것인지에 대해 나타나 있습니다. gradlew 파일은 Linux ,MAC 에서 동작해야하기 때문에 개행 처리를 lf 로 지정되어 있고, gradle.bat 파일은 Windows 에서 쓰이는 파일이므로 crlf 로 설정되어 있습니다. |
📄.gitignore | git에서 commit 시 처리하지 않을 폴더나 파일목록이 작성되어 있습니다. 빌드가 완료 된 build 폴더와 gradle을 실행시킬 때 임시로 생성되는 .gradle 폴더가 등록되어 있습니다. |
📁 gradle | 외부에서 gradle을 실행시키기 위해 사용될 gradle java 프로그램이 wrapper에 들어 있습니다. |
📁 wrapper | 실제 gradle을 실행시키기 위한 jar파일과 속성 파일이 들어 있습니다. |
📁 .gradle | gradle을 실행한 후에 임시로 저장되는 cache 데이터들이 저장되어 있습니다. |
📄 gradlew | Linux ,MAC 에서 gradle을 실행 시킬 때 사용 되는 bash 스크립트 파일입니다. 이 파일 덕분에 gradle을 설치하지 않아도, gradle을 사용할 수 있게 됩니다. |
📄 gradlew.bat | Windows 에서 실행 시킬 때 사용 되는 batch 스크립트 파일입니다. 이 파일 덕분에 gradle을 설치하지 않아도, gradle을 사용할 수 있게 됩니다. |
📁 lib | 이전 포스트에서 생성한 소스파일이 들어 있습니다. 실제 프로젝트를 수행 할 디렉터리 입니다. gradle init 한 명령어에 따라 있을 수도, 없을 수 도 있습니다. |
📄 build.gradle | ⭐ gradle을 다루기 위한 필수 빌드 스크립트 입니다. 이 파일로 어떻게 빌드할 것인지, 테스트 할 것인지 groovy 언어로 프로그래밍 할 수 있습니다. |
📁 src | 프로젝트의 소스 파일이 들어있습니다. java/main 은 메인 소스파일이, java/test 는 main을 테스트하기 위한 소스파일이 들어있습니다. |
📄 settings.gradle | ⭐ 프로젝트에 대한 설정 정보를 확인할 수 있습니다. 대표적으로 프로젝트가 빌드 될 때, 파일 내에 있는 rootProject.name 또는 include 되어 있는 subProject 이름으로 빌드가 됩니다. |
⌨️ Gradle 명령어 종류
Gradle을 사용하기 위해선 gradle을 PC에 설치하여 이용할 수도 있지만, gradlew
파일을 통해 gradle 명령어를 실행 할 수 있습니다.
주로 사용되는 명령어는 아래의 명령어와 같습니다.
gradle help
gradle 명령어의 대략적인 사용 방법들을 알려줍니다. 실행 결과는 다음과 같으며, 하이라이트 된 부분을 통해 build를 하기 위해선 ./gradlew <task 명>
명령어를 통해 실행하면 되고, ./gradlew tasks
명령어를 통해 사용 가능한 task 목록들을 확인할 수 있습니다.
fromitive@dev:~/practice/gradle-example$ ./gradlew help
> Task :help
Welcome to Gradle 8.4.
To run a build, run gradlew <task> ...
To see a list of available tasks, run gradlew tasks
To see more detail about a task, run gradlew help --task <task>
To see a list of command-line options, run gradlew --help
For more detail on using Gradle, see https://docs.gradle.org/8.4/userguide/command_line_interface.html
For troubleshooting, visit https://help.gradle.org
BUILD SUCCESSFUL in 949ms
1 actionable task: 1 executed
gradle tasks
사용 가능한 <task 명>
을 확인하기 위해 명령어를 실행하면 아래와 같은 결과가 나타납니다. 즉, 이 프로젝트에서 사용할 수 있는 <tesk 명>
은 assemble
, build
, classes
.. 등이 있습니다.
실제로 build
task를 사용하기 위해선, ./gradlew build로 입력하면 build
라는 task가 수행이 되는 구조입니다.
흥미로운 점은, Help tasks
쪽 입니다. help는 주로 명령어의 사용 방법을 알려주는데, dependencies
,buildEnvironment
등 gradle-example
(현재 프로젝트)에 대한 정보를 알려주는 용도로 사용하고 있습니다.
프로젝트에 대한 의존성, 상세 정보에 대해서는 help task 쪽의 명령어를 사용하면 자세히 알 수 있는 걸 확인할 수 있습니다.
fromitive@dev:~/practice/gradle-example$ ./gradlew tasks
> Task :tasks
------------------------------------------------------------
Tasks runnable from root project 'gradle-example'
------------------------------------------------------------
Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
buildDependents - Assembles and tests this project and all projects that depend on it.
buildNeeded - Assembles and tests this project and all projects it depends on.
classes - Assembles main classes.
clean - Deletes the build directory.
jar - Assembles a jar archive containing the classes of the 'main' feature.
testClasses - Assembles test classes.
Build Setup tasks
-----------------
...(생략)...
Documentation tasks
-------------------
javadoc - Generates Javadoc API documentation for the 'main' feature.
Help tasks
----------
buildEnvironment - Displays all buildscript dependencies declared in root project 'gradle-example'.
dependencies - Displays all dependencies declared in root project 'gradle-example'.
dependencyInsight - Displays the insight into a specific dependency in root project 'gradle-example'.
...(생략)...
Verification tasks
------------------
check - Runs all checks.
test - Runs the test suite.
To see all tasks and more detail, run gradlew tasks --all
To see more detail about a task, run gradlew help --task <task>
BUILD SUCCESSFUL in 608ms
1 actionable task: 1 executed
gradle build
gradle의 build
task를 실행하게 되면 아래와 같이 등록된 task가 실행하게 되고, 성공적으로 build
가 수행되었음을 확인할 수 있습니다.
fromitive@dev:~/practice/gradle-example$ ./gradlew build
(..생략..)
BUILD SUCCESSFUL in 702ms
11 actionable tasks: 11 up-to-date
반면 tasks
에 등록되지 않은 명령어를 수행하게 되면 아래와 같이 FALIED가 나타나게 됩니다.
romitive@dev:~/practice/gradle-example$ ./gradlew fail
FAILURE: Build failed with an exception.
* What went wrong:
Task 'fail' not found in root project 'gradle-example' and its subprojects.
(..생략)..
BUILD FAILED in 603ms
build 결과
build 결과는 lib
디렉터리의 build
폴더가 생성됩니다. 그 이유는, settings.gradle
파일에 lib
폴더가 include 되어 있기 때문입니다..
📁 gradle-example
(..생략..)
├── 📁lib
│ ├── 📁 build
│ ├── 📄 build.gradle
│ └── 📁 src
(..생략..)
gradle clean
빌드한 프로젝트를 삭제하기 위해선 ./gradlew clean
명령어를 입력하여 clean
task를 수행해줍니다. 소스코드가 변경되어 재 컴파일 시 변경된 부분을 확실하게 반영하기 위해 사용합니다.