해결된 질문
작성
·
122
1
안녕하세요, 궁금한 게 있어 질문드립니다!
현재 강의까지 그래들에 3개의 디펜던시를 추가해주었는데요, 기존 자바-스프링부트 환경에서는 디펜던시에 라이브러리 버전을 명시하지 않아도 스프링부트가 내부적으로 호환되는 버전을 찾아 사용하는 것으로 알고 있습니다.
반면, 코틀린-스프링부트에서 디펜던시를 사용할 때 세 경우 모두 버전까지 명시해 사용했는데요, 혹시 코틀린을 사용할 땐 매번 이렇게 최신의 안정화된 버전을 찾아 사용해야 하는 것인지 궁금합니다.
또한 검색해보니 groovy gradle 대신 사용하는 kotlin-dsl이라는 것도 봤는데요, 혹시 고급편에 이 내용이 포함되어 있을지도 궁금합니다.
항상 정성들인 답변 감사합니다.
답변 1
0
안녕하세요! foodsmith96님! 🙂 좋은 질문 남겨주셔서 감사드립니다.
맞아요! 저희는 코틀린과 스프링을 함께 사용하며 여러 플러그인을 추가해주었고, 플러그인마다 적절한 버전을 설정해주었습니다! (사실상 kotlin의 버전과 동일하죠! 코틀린의 버전이 1.6.21이라면, 플러그인 역시 1.6.21이죠 👍)
제가 알고 있기로는 이런 버전 설정은 스프링 버전과 직접적으로 호환되지 않아 직접 설정을 해주어야 합니다!
다만, 모든 설정마다 1.6.21이라는 문자열을 직접적으로 쓰는 대신 build.gradle 역시 결국은 빌드 스크립트 파일이기 때문에 변수를 만들어 적절히 설정할 수 있습니다.
예를 들어 groovy를 언어로 사용하는 gradle 설정 파일에서 변수를 만들어 보고 싶다면
https://stackoverflow.com/questions/34675914/using-variables-in-gradle-build-script
를 참고해보실 수 있습니다! 👍
말씀해주신 것처럼 gradle 빌드 스크립트를 작성할 때 groovy 대신 kotlin을 사용할 수도 있습니다.
실제로 2023년 4월, gradle의 기본 언어는 kotlin이 되었는데요! (https://blog.jetbrains.com/kotlin/2023/04/kotlin-dsl-is-the-default-for-new-gradle-builds/) 결국 이는 "Spring" 이란 프레임워크를 java로 개발할지 kotlin으로 개발할지와 비슷하게, "Gradle" 이라는 개념을 어떤 언어로 풀어낼지에 관한 변경이에요!
때문에 <코틀린 고급편> 강의에서는 gradle에 대한 개념 혹은 kotlin으로 된 build.gradle 스크립트 자체를 다루지는 않지만,
kotlin으로 gradle 스크립트를 작성할 때 기본이 되는 Kotlin DSL에 대한 개념과
kotlin으로 DSL을 만드는 방법
DSL을 만들기 위해 사용되는 언어적 특징들
함께 만들어보는 DSL 예제 및 실제 활용되는 다양한 DSL 예시들을
다루고 있습니다.
답변이 도움이 되었으면 좋겠습니다.
감사합니다! 🙏
아 그렇군요! 🙂 플러그인 뿐 아니라 dependencies
부분도 포함이었군요!
이 부분 역시 안타깝게도, 제가 알고 있기로는 버전을 직접 명시해주어야 합니다! 🥲
혹시나 더 좋은 방법을 알게 되면 한 번 소개해드리도록 하겠습니다!
감사합니다! 🙏
답변 감사드립니다.
다만, 제가 여쭤봤던 정확한 부분은 아래 디펜던시 영역에서 버전을 명시하는 것에 대한 질문이었습니다.
(플러그인과 별다른 차이가 없다면 죄송합니다.)
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8' // 코틀린 사용 설정
implementation 'org.jetbrains.kotlin:kotlin-reflect:1.6.21' // 코틀린 리플렉션 설정
implementation 'com.fasterxml.jackson.module:jackson-module-kotlin:2.13.3' // 코틀린 Jackson 설정
runtimeOnly 'com.h2database:h2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
이 영역 역시 말씀해주신 부분과 동일한 걸까요?