diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 604be5d..63c8b45 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,7 +7,6 @@ on: env: ORG_GRADLE_PROJECT_version: ${{ github.sha }} - jobs: build: @@ -15,38 +14,30 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - java-version: [ 8, 11, 17, 21, 23 ] + java-version: [ 8, 11, 17, 21, 25 ] steps: - name: Checkout uses: actions/checkout@v5 - - name: Cache - uses: actions/cache@v4 - with: - path: | - ~/.gradle/wrapper - ~/.gradle/caches - key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle.*') }} - restore-keys: | - gradle-${{ runner.os }} - gradle- - - name: Set up JDK ${{ matrix.java-version }} + - name: Set up JDK uses: actions/setup-java@v5 with: - java-version: ${{ matrix.java-version }} + java-version-file: .tool-versions distribution: temurin + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v5 - name: Prepare run: ./gradlew clean dependencies - name: Build run: ./gradlew assemble testClasses - name: Test - run: ./gradlew test + run: ./gradlew test -PtestTargetJavaVersion=${{ matrix.java-version }} - name: Publish Test Report uses: scacap/action-surefire-report@v1 if: failure() with: github_token: ${{ secrets.GITHUB_TOKEN }} report_paths: '**/build/test-results/test/TEST-*.xml' - check_name: Test Failures (${{ matrix.java-version }}) + check_name: Test Failures (Java ${{ matrix.java-version }}) release: name: Release Check diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3ec08c9..4bf980f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,21 +16,13 @@ jobs: steps: - name: Checkout uses: actions/checkout@v5 - - name: Cache - uses: actions/cache@v4 - with: - path: | - ~/.gradle/wrapper - ~/.gradle/caches - key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle.*') }} - restore-keys: | - gradle-${{ runner.os }} - gradle- - - name: Set up JDK 21 + - name: Setup JDK uses: actions/setup-java@v5 with: - java-version: 21 + java-version-file: .tool-versions distribution: temurin + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v5 - name: Prepare run: ./gradlew clean dependencies - name: Assemble Artefacts @@ -50,21 +42,13 @@ jobs: steps: - name: Checkout uses: actions/checkout@v5 - - name: Cache - uses: actions/cache@v4 - with: - path: | - ~/.gradle/wrapper - ~/.gradle/caches - key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle.*') }} - restore-keys: | - gradle-${{ runner.os }} - gradle- - - name: Set up JDK 21 + - name: Setup JDK uses: actions/setup-java@v5 with: - java-version: 21 + java-version-file: .tool-versions distribution: temurin + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v5 - name: Prepare run: ./gradlew clean dependencies - name: Generate Documentation diff --git a/.sdkmanrc b/.sdkmanrc index 79d039e..d34285e 100644 --- a/.sdkmanrc +++ b/.sdkmanrc @@ -1,3 +1,3 @@ # Enable auto-env through the sdkman_auto_env config # Add key=value pairs of SDKs to use below -java=23.0.2-tem +java=25.0.1-tem diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000..c3d34cf --- /dev/null +++ b/.tool-versions @@ -0,0 +1 @@ +java 25.0.1 \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index a76e8d0..d7ba6e9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,6 +1,5 @@ import io.github.gradlenexus.publishplugin.NexusRepository -import org.gradle.api.JavaVersion.VERSION_1_8 -import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.gradle.kotlin.dsl.* plugins { kotlin("jvm") version "2.1.21" @@ -20,31 +19,36 @@ repositories { } dependencies { - testImplementation(name = "atrium-cc-en_GB-robstoll", group = "ch.tutteli.atrium", version = "0.15.0") - testImplementation(name = "junit-jupiter-api", group = "org.junit.jupiter", version = "5.7.2") - testImplementation(name = "junit-jupiter-params", group = "org.junit.jupiter", version = "5.7.2") + testImplementation("ch.tutteli.atrium:atrium-cc-en_GB-robstoll:0.15.0") + testImplementation("org.junit.jupiter:junit-jupiter-api:5.7.2") + testImplementation("org.junit.jupiter:junit-jupiter-params:5.7.2") constraints { testImplementation(kotlin("reflect", KotlinVersion.CURRENT.toString())) } - testRuntimeOnly(name = "junit-platform-launcher", group = "org.junit.platform", version = "1.12.1") - testRuntimeOnly(name = "junit-jupiter-engine", group = "org.junit.jupiter", version = "5.7.2") + testRuntimeOnly("org.junit.platform:junit-platform-launcher:1.12.1") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.7.2") } -tasks.withType().configureEach { - useJUnitPlatform() - reports.junitXml.required = true -} +val compilationTargetJavaVersion = JavaLanguageVersion.of(8) java { - sourceCompatibility = VERSION_1_8 - targetCompatibility = VERSION_1_8 + toolchain { + languageVersion = compilationTargetJavaVersion + } } -kotlin { - compilerOptions { - jvmTarget = JvmTarget.JVM_1_8 +val testTargetJavaVersion = providers + .gradleProperty("testTargetJavaVersion") + .map(JavaLanguageVersion::of) + .orElse(compilationTargetJavaVersion) + +tasks.withType().configureEach { + useJUnitPlatform() + reports.junitXml.required = true + javaLauncher = javaToolchains.launcherFor { + languageVersion = testTargetJavaVersion } } @@ -78,11 +82,6 @@ val dokkaJar by tasks.registering(Jar::class) { from(tasks.named("dokkaGeneratePublicationJavadoc")) } -artifacts { - archives(sourcesJar) - archives(dokkaJar) -} - lateinit var publication: MavenPublication lateinit var githubPackages: ArtifactRepository lateinit var mavenCentral: NexusRepository diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 1b33c55..f8e1ee3 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 7705927..6954be8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-all.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 23d15a9..adff685 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright © 2015-2021 the original authors. +# Copyright © 2015 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -114,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH="\\\"\\\"" # Determine the Java command to use to start the JVM. @@ -172,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -212,7 +210,6 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" diff --git a/gradlew.bat b/gradlew.bat index 5eed7ee..e509b2d 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -70,11 +70,10 @@ goto fail :execute @rem Setup the command line -set CLASSPATH= @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell diff --git a/settings.gradle.kts b/settings.gradle.kts index a558ae7..3de4392 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1 +1,5 @@ +plugins { + id("org.gradle.toolchains.foojay-resolver-convention").version("1.0.0") +} + rootProject.name = "string-notation"