Skip to content

Gradle #2 - gradle이 지원하는 명령어

글 요약

  1. Gradle 프로젝트를 생성하게 되면 2개의 중요한 파일인 settings.gradle파일과 build.gradle파일이 생성된다.

  2. Gradle에서 사용 가능한 task 목록을 확인하기 위해선 ./gradlew tasks 명령어를 입력한다.

  3. Gradle에서 프로젝트를 컴파일하기 위해선 ./gradlew build 명령어를 입력한다.

  4. Gradle에서 컴파일 된 파일을 정리하기 위해선 ./gradlew clean 명령어를 입력한다.

🌲 Gradle 프로젝트 구조

이전 포스트에서 생성한 프로젝트의 디렉터리 구조는 아래와 같습니다.

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 목록들을 확인할 수 있습니다.

gradle help
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,buildEnvironmentgradle-example(현재 프로젝트)에 대한 정보를 알려주는 용도로 사용하고 있습니다.

프로젝트에 대한 의존성, 상세 정보에 대해서는 help task 쪽의 명령어를 사용하면 자세히 알 수 있는 걸 확인할 수 있습니다.

gradle tasks
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가 수행되었음을 확인할 수 있습니다.

build task 실행
fromitive@dev:~/practice/gradle-example$ ./gradlew build
(..생략..)

BUILD SUCCESSFUL in 702ms
11 actionable tasks: 11 up-to-date

반면 tasks에 등록되지 않은 명령어를 수행하게 되면 아래와 같이 FALIED가 나타나게 됩니다.

build task 실행
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 디렉터리 구조
📁 gradle-example
(..생략..)
├── 📁lib
   ├── 📁 build
   ├── 📄 build.gradle
   └── 📁 src
(..생략..)

gradle clean

빌드한 프로젝트를 삭제하기 위해선 ./gradlew clean 명령어를 입력하여 clean task를 수행해줍니다. 소스코드가 변경되어 재 컴파일 시 변경된 부분을 확실하게 반영하기 위해 사용합니다.


참고 자료


Comments