Gradle이란
- Gradle은 오픈 소스 빌드 자동화 도구입니다.
- Gradle의 빌드 스크립트는
groovy
또는Kotlin
DSL(Domain Specific language, 도메인 특화 언어)을 사용하여 작성됩니다.
Gradle의 장점
- 공식문서에서 정의되어있는 장점은
Highly customizable
,Fast
,Poweful
이 세 단어로 표현하고 있습니다. 사용자 정의
가 가능하며확장 가능
합니다.- 이전 실행의 출력을 재사용하고 변경된 입력만 처리하며, task를
병렬 처리
하기 때문에 속도가 빠릅니다. - Android용 공식 빌드도구이며, 많은 언어와 기술들을 지원합니다.
Gradle Structure(Groovy)
- 공식 문서에 Gradle 프로젝트 생성 참고
-
├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── app ├── build.gradle └── src ├── main │ └── java │ └── demo │ └── App.java └── test └── java └── demo └── AppTest.java
- gradle :
gradle wrapper
(선언된 버전의 gradle을 호출하여 필요한 경우 미리 다운로드) 관련 파일 - gradlew, gradlew.bat : gradle wrapper 의 시작 스크립트
- settings.gradle : 빌드 이름 및 하위 프로젝트를 정의
- app : project
- /app/build.gradle : app project의 빌드 스크립트
settings.gradle(groovy)
$ cat settings.gradle
rootProject.name = 'demo'
include('app')
rootProject.name
: 빌드에 이름을 할당. 빌드가 있는 경로(gradle 프로젝트 경로)에 따라 빌드이름을 지정합니다.include("app")
: 빌드가 실제코드와 빌드 로직을 포함하는app
이라는 하위 프로젝트로 구성되었음을 정의합니다.
build.gradle(groovy)
$ cat app/build.gradle
plugins {
id 'application'
}
repositories {
mavenCentral()
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter:5.7.2'
implementation 'com.google.guava:guava:30.1.1-jre'
}
application {
mainClass = 'demo.App'
}
tasks.named('test') {
useJUnitPlatform()
- plugins : gradle에서 지원하는 플러그인 을 정의합니다. application 플러크인은 java에서 CLI 어플리케이션의 빌드를 지원합니다.
- repositores : 종속성 해결 을 정의합니다. mavenCentral() 은 repositoryHandler에서 정의된 주소를 통해 종속성을 해결합니다.
- dependencies : 의존성을 주입받습니다. 이 부분은 추가로 포스팅을 남길 예정입니다.
- tasks :
gradle 프로젝트의 작업 단위
입니다. 해당 task만 실행 할 수 있습니다.(gulpjs의 task()와 유사합니다). 예시에서는 test란 이름으로 해당 task를 실행할 수 있습니다.
Run the application
$ ./gradlew run
> Task :app:run
Hello world!
BUILD SUCCESSFUL
2 actionable tasks: 2 executed
application
플러그인은 명령줄에서 직접 어플리케이션을 실행할 수 있습니다.- mainClass 속성에 할당된 클래스의 기본 메서드를 실행합니다. (Hello World!란 출력은 main 메소드에 작성되어있습니다)
Bundle the application
$ ./gradlew build
BUILD SUCCESSFUL in 0s
7 actionable tasks: 7 executed
application
플러그인은 모든 종속성과 함께 응용프로그램을 번들로 제공합니다.- 번들 파일의 기본 경로는 어플리케이션 내 build/distributions/[어플리케이션명].tar, [어플리케이션명].zip 입니다.
Publish a Build Scan
$ ./gradlew build --scan
BUILD SUCCESSFUL in 0s
7 actionable tasks: 7 executed
Publishing a build scan to scans.gradle.com requires accepting the Gradle Terms of Service defined at https://gradle.com/terms-of-service.
Do you accept these terms? [yes, no] yes
Gradle Terms of Service accepted.
Publishing build scan...
https://gradle.com/s/5u4w3gxeurtd2
- 위 링크를 통해 빌드 내용을 상세하게 조회할 수 있습니다. 프로젝트 빌드가 실패하였을 경우 참고할 수 있습니다.
출처 : https://gradle.org/
'gradle' 카테고리의 다른 글
[gradle] spring boot & react 프로젝트 빌드하기 (0) | 2022.03.28 |
---|