Gradle Wrapper 버전이 낮아서 JDK 21 지원을 안한다면

작성: 2024.11.20

수정: 2024.11.20

읽는시간: 00 분

Programming/Java

반응형

Intro

프로젝트의 Spring boot 버전을 3.2.5 에서 3.3.5로 업데이트 하는 김에 사용하는 JDK도 17 에서 21로 업데이트 하려고 했다.

그런데 사용중인 Gradle 의 버전이 낮다 보니 바로 변경되지는 않았다.

코틀린 버전도 JDK 21을 지원하는 버전이 아니여서 업그레이드가 필요했는데, 전체적으로 겪었던 내용들을 정리해본다.

1

JAVA 21을 지원하지 않음.

Gradle

JDK 18 까지만 지원을 하는 Gradle을 사용하고 있다.

2

제일 먼저 gradle의 업그레이드가 필요했다.

지금 쓰는 버전을 확인 해 본다.

./gradlew --verson

3

확인 결과 굉장히 오래된 7.5 버전을 사용중이다.

아래의 명령어로 원하는 gradle 버전으로 업데이트 할 수 있다. 처음에는 아래와 같이 8.3으로 업데이트 했는데,

./gradlew wrapper --gradle-version 8.3

4

Gradle 업데이트 후에는 새로 Load 해주어야 한다.

업데이트 하고 보니

5

자바 21이 아직 인큐베이팅이다. 그래서 Gradle은 8.11로 업그레이드 했다.

./gradlew wrapper --gradle-version 8.11

Kotlin

Kotlin 은 원래 1.7.22 버전을 쓰고 있었는데, 1.9.20부터 JDK 21을 지원한다.

코틀린 버전도 거기에 맞춰준다.

  kotlin("jvm") version "1.9.20"
  kotlin("plugin.spring") version "1.9.20"
  kotlin("plugin.jpa") version "1.9.20"

코틀린 컴파일 옵션에서 jvmTarget도 변경해준다.

tasks.withType<KotlinCompile> {
    kotlinOptions {
        freeCompilerArgs = listOf("-Xjsr305=strict")
        jvmTarget = "21"
    }
}

자바 버전도 명시해준다.

java {
    sourceCompatibility = JavaVersion.VERSION_21
    targetCompatibility = JavaVersion.VERSION_21
}

Github Action

CI/CD 에도 영향을 주므로, Github action도 변경해줘야한다.

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
        with:
          submodules: recursive
          token: ${{ secrets.PAT_TOKEN }}
      - name: Copy secret files
        run: |
          cp dutypark_secret/application-op.yml src/main/resources/
      - name: Set up JDK 21
        uses: actions/setup-java@v3
        with:
          java-version: '21'
          distribution: 'temurin'
      - name: Build with Gradle
        uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
        with:
          arguments: build
      - name: Upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: dutypark-ci
          path: build/libs/*.jar

크게 바꿀 건 없고 JDK 17 에서 21로만 변경 해 주었다.

gradle-build-action은 프로젝트의 Gradle Wrapper 버전을 따르기 때문에 따로 변경할건 없다.

생각보다 꽤 바꿀게 많았지만 문제 없이 잘 작동하는 것을 확인했다.

References

반응형