Troubleshooting

[TroubleShooting] Java 프로젝트에 Kotlin 추가하기

DuL2 2023. 12. 5. 09:53

Java 프로젝트에 Kotlin 추가하기 

발생한 문제

java로 코딩 테스트 문제를 풀다가 Kotlin으로 풀어보기 위해 프로젝트를 변경하던 중 발생.

기존 코딩 테스트 공부용 프로젝트가 java 프로젝트 였고, Kotlin이 java와 호환된다고 생각하여 프로젝트 configure 없이 간단한 코딩 테스트 문제를 작성하고, 테스트 코드를 작성 후 실행해봤으나 gradle이 빌드가 되지 않음을 인지함.

해결 및 시도 방법

kotlin에 대한 의존성 이슈 혹은 test 라이브러리 이슈로 인식하였고, build.gradle 파일의 plugin에 kotlin을 추가해주어야 할 것 같아 `gradle kotlin plugin` 검색어로 검색.

 

1. gradle doc 확인

2. 기존에 kotlin 파일이 아닌 groovy 파일이었기 때문에 groovy 설정법 탐색

3.https://kotlinlang.org/docs/gradle-configure-project.html#targeting-the-jvm

 

Configure a Gradle project | Kotlin

 

kotlinlang.org

jvm 타게팅 하는 문서가 있어 똑같이 따라함.

예시에는 `1.9.21`이 적혀있어 빌드를 하였다. 우측 상단 코끼리 클릭

하지만, 나의 프로젝트는 좀 오래되어서 버전을 지원하지 않는다는 말과 마지막 지원 버전이 `1.9.0` 버전임을 인텔리제이가 친절히 알려주었고 손쉽게 변경.

// For `KotlinCompile` task below

plugins {
    id 'java'
    id 'org.jetbrains.kotlin.jvm' version '1.9.0'
}

group 'com.algorithm_proj'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'

    testImplementation 'org.assertj:assertj-core:3.11.1' // test code용 라이브러리 추가
}

test {
    useJUnitPlatform()
}

sourceSets {
    main.kotlin.srcDirs += 'src/main/kotlin'
    main.java.srcDirs += 'src/main/java'
}

 

 

+ 추가로 sourceSet 분리에 대한 가이드가 문서에 친절히 나와있어 확인한 김에 분리 설정 추가.

 

세부사항 변화

기존 -> 수정

// build.gradle
plugins {
    id 'java'
    id 'org.jetbrains.kotlin.jvm' version '1.9.0'	//버전에 맞는 jvm으로 새로 추가
}

sourceSets {	//kotlin 소스 분리
    main.kotlin.srcDirs += 'src/main/kotlin'
    main.java.srcDirs += 'src/main/java'
}

 

회고

프로젝트 세팅과 관련 문서는 처음 세팅할 때 빼고 잘 볼 기회가 없었는데 이번 기회에 Java에서 Kotlin도 사용해보면서 프로젝트 설정 방법을 다시 한 번 확인하는 좋은 기회였다.

 

해결을 위해 필요한 부분만 체크하면서 진행했으나 시간을 내서 kotlin 문서를 정독하고 테스트 코드 방식과 라이브러리 등을 알아보고 공부하는 것이 좋을 것 같다. 현재는 assertJ, Junit 5로 사용하고 있으나 잠깐 검색만 해봐도 kotest, Kluent와 같은 플러그인들이 있음을 알았기에 추 후에 공부해보려고 한다.

 

확인한 자료들

https://www.youtube.com/watch?v=PqA6zbhBVZc

https://velog.io/@jyunxx/%EC%BD%94%ED%8B%80%EB%A6%B0-%EC%9C%A0%EB%8B%9B-%ED%85%8C%EC%8A%A4%ED%8A%B81

 

코틀린 유닛 테스트(1)

다재다능 코틀린 프로그래밍 (저자: 벤컷 수브라마니암)

velog.io

https://stackoverflow.com/questions/56718118/upgrade-from-kotlin-1-3-31-1-3-40-breaks-android-build/56751999#56751999

 

Upgrade from Kotlin 1.3.31 -> 1.3.40 breaks Android build

If I try to upgrade to the latest Kotlin version in my Gradle project, I get the following error building my Android subproject: e: /(redacted)/AndroidLauncher.kt: (8, 15): Cannot access built-in

stackoverflow.com

https://gr-st-dev.tistory.com/509

 

[kotlin] 코틀린 기초 강좌 - 코틀린 테스트 코드

Kotlin 기초 강좌 - 코틀린 테스트 코드 1. 코틀린 테스트 코드란 무엇인가요? 코틀린 테스트 코드는 코틀린 언어를 사용하여 개발한 소프트웨어의 정확성을 검증하기 위해 작성되는 코드입니다.

gr-st-dev.tistory.com