[TroubleShooting] Java 프로젝트에 Kotlin 추가하기
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
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