지난 글에서는 Gradle 이 무엇인지 알아보았다. 이번에는 Gradle 을 설치하고 사용해보는 튜토리얼을 진행해보려 한다. 해당 내용은 Gradle 의 Getting Started 내용을 읽고 작성하였다.
1. Gradle 설치 & Gradle Wrapper
Gradle 을 사용하기 위해서는 우선 설치를 진행해야 한다. 하지만 신규 Gradle 빌드를 생성하는 것이 아니라 이미 존재하는 Gradle 빌드를 실행하려 한다면 따로 Gradle 을 설치할 필요가 없다. Gradle 빌드는 기본적으로 gradlew 또는 gradlew.bat 파일을 가지고 있는데 이들은 Gradle Wrapper 라고 한다.
- Gradle Wrapper
Gradle Wrapper 는 미리 지정된 버전의 Gradle 을 호출하도록 하는 스크립트이다.
Gradle 빌드를 사용하기 위해서는 알맞은 Gradle 버전이 설치되어 있어야 한다. 하지만 매번 알맞는 버전의 Gradle 을 설치하는 것은 너무 비효율적이다. Gradle 은 이러한 문제를 해결하기 위하여 각 프로젝트마다 내장 Gradle 을 무조건 넣어주도록 하였다.
Gradle Wraper, 내장 Gradle 은 gradle init 시에 생성되는 gradle/wrapper 디렉토리 아래에 존재한다. 이 위치에는 wrapping 된 Gradle 파일들 gradle-wrapper.jar, gradle-wrapper.properties 등이 존재한다. 그리고 이러한 내장 Gradle 을 사용하기 위해서는 gradlew 명령어를 통해 사용할 수 있다.
- Gradle 설치
만약 신규 빌드를 생성하거나 기존에 존재하는 빌드에 Gradle Wrapper 를 추가하려 한다면 Gradle 을 설치해야 한다.
Gradle 을 설치하는 방법은 다양한데, 이 글에서는 homebrew 를 사용하여 설치했다. 이외에 설치 방법은 gradle 홈페이지의 문서를 참고하면 된다. (https://docs.gradle.org/current/userguide/installation.html#installation)
> brew install gradle
> gradle -v
...
------------------------------------------------------------
Gradle 7.6
------------------------------------------------------------
...
2. Gradle build 초기화
Gradle 프로젝트를 구성하기 위해서는 프로젝트 구성할 디렉토리에서 'init' 명령어를 실행하면 된다.
> gradle init
gradle init 명령어를 수행하면 터미널 프롬프트에서 프로젝트 타입, 사용할 프로그래밍 언어, 빌드 스크립트 언어, 테스트 프레임워크 등등의 빌드 프로젝트 초기화를 수행 할 수 있다.
초기화를 완료하면 아래와 같은 디렉토리 구조가 생성된다. 이 경우에는 Java 애플리케이션을 조건으로 프로젝트를 생성했다.
├── app
│ ├── build.gradle
│ └── src
│ ├── main
│ │ ├── java
│ │ │ └── demo
│ │ │ └── App.java
│ │ └── resources
│ └── test
│ ├── java
│ │ └── demo
│ │ └── AppTest.java
│ └── resources
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
- gradle
Gradle wrapper 파일들을 포함하고 있는 디렉토리이다. wrapper 디렉토리 아래에 gradle wrapper 파일이 들어있다.
- gradlew, gradlew.bat
gradle wrapper 를 실행하는 스크립트 파일이다. gradlew 는 Mac, Linux 용이고 gradle.bat 은 윈도우용 스크립트이다.
- settings.gradle
settings.gradle 은 build name 과 subproject 들을 정의해놓은 파일이다.
rootProject.name = 'demo'
include('app')
settings.gradle 파일은 위와 같이 두 줄로 이루어져있다.
rootProject.name 은 빌드의 이름을 할당한다. include 는 빌드의 실제 코드와 로직을 가지고 있는 서브프로젝트를 정의한다. 이 예제에서는 'app' 이라는 이름의 서브프로젝트로 빌드가 구성된다.
- build.gradle
build.gradle 은 'app' 프로젝트의 빌드 스크립트이다. build.gradle 의 초기 상태는 다음과 같다. 빌드 초기화 시에 입력한 내용들을 기반으로 작성된다.
plugins {
// Apply the application plugin to add support for building a CLI application in Java.
id 'application'
}
repositories {
// Use Maven Central for resolving dependencies.
mavenCentral()
}
dependencies {
// Use JUnit Jupiter for testing.
testImplementation 'org.junit.jupiter:junit-jupiter:5.9.1'
// This dependency is used by the application.
implementation 'com.google.guava:guava:31.1-jre'
}
application {
// Define the main class for the application.
mainClass = 'demo.App'
}
tasks.named('test') {
// Use JUnit Platform for unit tests.
useJUnitPlatform()
}
- src
src 디렉토리는 프로젝트의 소스코드가 위치하는 디렉토리 이다. main 디렉토리에는 기본 java source code 들이 위치하고 test 디렉토리에는 test source code 들이 위치한다.
3. application 실행
cli 명령어를 통해서 application 을 실행시킬 수 있다. 'run' 명령어를 실행하면 Gradle 은 build.gradle 의 application 플러그인의 mainClass property 에 정의된 클래스의 main 함수를 실행시킨다.
> ./gradlew run
> Task :app:run
Hello World!
BUILD SUCCESSFUL in 3s
2 actionable tasks: 2 executed
첫 실행 시에는 gradlew 스크립트에 따라서 gradle 을 다운로드하고 저장하는 과정을 거처야 하기 때문에 시간이 더 걸릴 수 있다.
4. application 빌드
application 플러그인을 통해서 application 을 관련 종속성 라이브러리 등과 함께 번들링할 수 있다. 이렇게 빌드 된 결과물은 app/build/districutions 디렉토리에 app.tar 와 app.zip 으로 저장된다.
> ./gradlew build
[Reference]
- https://docs.gradle.org/current/userguide/getting_started.html
- https://docs.gradle.org/current/userguide/gradle_wrapper.html#gradle_wrapper
'기타' 카테고리의 다른 글
[NGINX] NGINX 란? (1) | 2023.05.11 |
---|---|
[MongoDB] Aggregation (0) | 2023.05.02 |
[Gradle] Gradle 이란? (1) | 2023.01.14 |
[기타] Sync - Async / Blocking - Non-Blocking (0) | 2022.04.05 |
[Kafka] Kafka Consumer 예제 (0) | 2022.03.22 |