많은 분들이 프로그램 개발 시 빌드 툴로 gradle을 사용하실 겁니다.
근데 별 관심을 두지 않으면 그저 초반 세팅 시에만 조금 관심 가질 뿐 프로젝트를 진행하게 되면 별 신경을 쓰지 않게 됩니다.
오늘은 이 Gradle이 무엇이고 왜 사용하는지에 대해 조금 알아 볼까 합니다.
우선 Gradle 공식 문서에 정의된 설명을 보겠습니다.
Gradle은 거의 모든 유형의 소프트웨어를 빌드할 수 있을 만큼 유연한 오픈 소스 빌드 자동화 도구입니다.
Gradle은 빌드하려는 항목 또는 빌드 방법에 대해 거의 가정하지 않습니다.
이것은 Gradle을 특히 유연하게 만듭니다라고 설명하고 있습니다.
설명에서 보듯 빌드 자동화 도구라는 설명이 되어있습니다.
보통 프로젝트 빌드시 사용한다고 이해하면 되겠습니다.
빌드 프로세스에는 코드 컴파일, 링크 및 패키징이 포함됩니다. 빌드 자동화 도구의 도움으로 프로세스의 일관성이 높아집니다.
Java , Scala , Android, C/C++ 및 Groovy 와 같은 언어로 자동화를 구축하는 기능으로 유명합니다 .
이 도구는 XML을 통해 Groovy 기반 도메인 특정 언어를 지원합니다.
Gradle은 여러 플랫폼에서 소프트웨어 빌드, 테스트 및 배포를 제공합니다.
근데 빌드 툴에는 Maven, Ant등 다른 빌드 툴들도 있는데 왜 Gradle을 사용할까요?
공식 문서에 따르면
- 고성능
- JVM기반
- 컨벤션
- 확장성
- IDE지원
- 통찰력
으로 설계 되었다고 설명합니다. 그러니 이 설계가 Gradle을 사용하는 이유가 되겠습니다.
Gradle | Maven |
|
|
이전 Gradle 설정시 Groovy만 지원했었는데 최근에는 Kotlin DSL을 스크립트를 사용할 수 있게 되었고 가독성 또한 향상되었습니다.
Kotlin DSL사용시 컴파일시 에러를 잡아주고 자동완성및 문법을 강제시킴 (괄호를 포함해야함)으로 일관적으로 작성할 수 있는 장점이 있습니다.
사용예를 한번 살펴 보겠습니다.
안드로이드 프로젝트에 사용된 예
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
}
android {
compileSdk 32
defaultConfig {
applicationId "com.gommi.testapp"
minSdk 21
targetSdk 32
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
...
}
Kotlin SpringBoot 프로젝트에 사용된 예
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("org.springframework.boot") version "2.7.5"
id("io.spring.dependency-management") version "1.0.15.RELEASE"
id("idea")
kotlin("jvm") version "1.7.20"
kotlin("plugin.spring") version "1.7.20"
kotlin("plugin.jpa") version "1.7.20"
kotlin("plugin.allopen") version "1.7.20"
kotlin("plugin.noarg") version "1.7.20"
kotlin("kapt") version "1.7.20"
}
group = "com.gommi.linkeyserviceclone"
version = "0.0.1"
java.sourceCompatibility = JavaVersion.VERSION_11
allOpen {
annotation("javax.persistence.Entity")
}
noArg {
annotation("javax.persistence.Entity")
}
repositories {
mavenCentral()
}
이상 Gradle이 무엇이고, 왜 사용하는지에 대해 알아 보았습니다.
'IT' 카테고리의 다른 글
tk.h version (8.5) doesn't match libtk.a version (8.6) 에러 해결 (0) | 2023.05.25 |
---|---|
시놀로지에서 Plex 패키지 업데이트 하는 법 (1) | 2023.05.25 |
NVIDIA와 Microsoft 협업 드라이버 업데이트 뉴스 (0) | 2023.05.24 |
맥(mac)에서 아이무비로 사진을 동영상으로 만드는 방법 (0) | 2023.05.22 |
구글 애널리틱스에 애드센스 연결하기 (0) | 2023.05.18 |