ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Gradle Kotlin DSL
    🔖 Kotlin 2024. 11. 21. 12:47

    🔨 빌드 도구

    빌드 도구는 소스 코드를 실행 가능한 애플리케이션으로 자동으로 만드는 프로그램.

    빌드는 소스 코드를 컴파일, 연결 및 사용 가능하거나 실행 가능한 형태로 패키징(가공)한다.

    빌드 자동화

    • 의존성 라이브러리 다운
    • 소스 코드를 바이너리 코드로 컴파일
    • 테스트 실행
    • 바이너리 코드 패키징
    • 운영 시스템 배포

     

    🚗 빌드 자동화 툴

     

    개발자가 빌드해야 할 코드, 종속성, 순서 등을 직접 추적해서 빌드하고 테스트, 배포하는 작업은 실용적이지 않기 때문에 빌드 자동화 도구를 이용해서 반복적인 작업을 자동화하여 개발 효율성을 높이고 오류 발생 가능성을 줄이며, 일관되게 빌드 프로세스가 진행되도록 한다.

    Java 에서 사용되고 있는 빌드 도구로는 Maven, Gradle 등이 존재한다.

     

    💡 Gradle Kotlin DSL

    Groovy DSL과 Kotlin DSL 스크립트 파일은 확장자명으로 구분할 수 있다.

    • Groovy DSL - .gradle
    • Kotlin DSL - .gradle.kts

     

    Groovy DSL는 표현이 자유로운 언어로 각기 다른 형태로 작성이 가능하다.

    dependencies {
      testImplementation 'org.springframework.boot:spring-boot-starter-test'
      testImplementation "org.codehaus.groovy:groovy-test"
      testImplementation "org.spockframework:spock-core:$spockVersion"
      testImplementation("org.spockframework:spock-spring:$spockVersion")
    }
    

     

    이와 같이 라이브러리 의존성을 선언하는 방식이 큰 따옴표, 작은 따옴표, 괄호를 이용하는 것처럼 다양하다.

    이는, 여러 사람이 함께 작업하는 환경에서는 일관성이 없어 보일 수 있다.

    이와 달리 Kotlin DSL에서 의존성을 선언한 형태는 아래와 같다.

     

    dependencies {
      testImplementation("org.springframework.boot:spring-boot-starter-test")
      testImplementation("org.codehaus.groovy:groovy-test")
      testImplementation("org.spockframework:spock-core:$spockVersion")
      testImplementation("org.spockframework:spock-spring:$spockVersion")
    }
    

     

    Kotlin DSL은 모든 문자열을 큰 따옴표(””)로 작성을 하는 적당한 수준의 제약이 있다.

     

     

    💡 문법오류 강조표시

    코틀린 DSL을 적용해서 얻을 수 있는 장점 중 하나가 문법오류 강조표시이다.

    문법오류가 발생했을 시, 강조표시를 볼 수 있다.

    • groovy dsl을 사용했을 때는 오류를 보기 어렵다.

     

    👍 Gradle Kotlin DSL 장점

    그래서 왜 Gradle Kotlin DSL을 사용할까??

     

    1️⃣ 정적 타입 시스템 지원을 통한 컴파일 타임 검사

    • Kotlin DSL은 Kotlin 언어를 기반으로 하며 정적 타입(type-safe) 시스템을 제공
    • 장점: 코드 작성 중 IDE의 자동 완성, 구문 검사, 타입 오류 탐지가 가능해 코드 안정성을 높일 수 있음.

     

    Groovy DSL

    • Groovy는 동적 언어
    dependencies {
        implementation 'org.jetbrains.kotlin:kotlin-stdlib'
        implementationn 'com.example:library:1.0' // 오타가 있어도 실행 전까지 오류를 알 수 없음
    }
    

     

    Kotlin DSL

    dependencies {
        implementation("org.jetbrains.kotlin:kotlin-stdlib")
        // IDE에서 "implementationn" 오타를 즉시 감지해 오류 표시
        implementationn("com.example:library:1.0") // 컴파일 단계에서 오류 발생
    }
    
    

     

    2️⃣ IDE 통합 및 개발 생산성 증가

    • IntelliJ IDEA 및 기타 JetBrains 도구는 Kotlin에 통합적인 환경을 제공.
    • 장점: 코드 자동 완성, 리팩토링 지원 등 IDE 기능을 최대한 활용함으로 생산성 향상.

     

    3️⃣ Kotlin 언어의 단순화된 구문

     

    Groovy DSL

    plugins {
      id 'application'
    }
    

     

    Kotlin DSL

    plugins {
      application
    }
    

     

    📖 Reference.

    ‘Gradle Kotlin DSL’ 이야기 | 우아한형제들 기술블로그

    What is a build tool?

    Gradle Kotlin DSL Primer

    새로운 Gradle 빌드의 기본 언어로 채택된 Kotlin DSL | The Kotlin Blog

    '🔖 Kotlin' 카테고리의 다른 글

    😎 Infix Function  (0) 2024.12.30
    널 안정성  (0) 2024.12.29
    🦥 lateinit 과 lazy  (0) 2024.12.29
    Kotlin Coroutines  (0) 2024.12.28
    Unit / Nothing  (0) 2024.11.25

    댓글

Designed by Tistory.