diff --git a/.github/workflows/end2end.yml b/.github/workflows/end2end.yml index 00d51833..66c9dac2 100644 --- a/.github/workflows/end2end.yml +++ b/.github/workflows/end2end.yml @@ -49,8 +49,13 @@ jobs: - { name: JavalinMySQLKotlin, test_file: end2end/javalin_mysql_kotlin.py, db: mysql_database } - { name: SpringBoot2.7Postgres, test_file: end2end/spring_boot_2.7_postgres.py, db: postgres_database } - { name: SpringBootHyperSQL, test_file: end2end/spring_boot_hypersql.py, db: "" } - java-version: [17, 18, 19, 20, 21, 24] + java-version: [17, 18, 19, 20, 21, 24, 25] distribution: ['adopt', 'corretto', 'oracle'] + exclude: + # Spring Boot 2.7 uses the legacy javax stack and does not support JDK 25; + # keep this app on Java 17-24 only (its javax coverage stays exercised there). + - app: { name: SpringBoot2.7Postgres, test_file: end2end/spring_boot_2.7_postgres.py, db: postgres_database } + java-version: 25 steps: - name: Download build artifacts uses: actions/download-artifact@v4 diff --git a/.github/workflows/gradle-tests.yml b/.github/workflows/gradle-tests.yml index 4a1e26c5..15e7d71b 100644 --- a/.github/workflows/gradle-tests.yml +++ b/.github/workflows/gradle-tests.yml @@ -41,7 +41,7 @@ jobs: continue-on-error: true strategy: matrix: - java-version: [17, 18, 19, 20, 21, 24] + java-version: [17, 18, 19, 20, 21, 24, 25] distribution: ['adopt', 'corretto', 'oracle'] steps: diff --git a/agent/build.gradle b/agent/build.gradle index d6656bf9..8e4b4453 100644 --- a/agent/build.gradle +++ b/agent/build.gradle @@ -1,11 +1,11 @@ plugins { id 'java' - id 'com.github.johnrengelman.shadow' version '7.1.0' + id 'com.gradleup.shadow' version '9.5.1' } dependencies { implementation project(':agent_api') - implementation 'net.bytebuddy:byte-buddy:1.15.11' + implementation 'net.bytebuddy:byte-buddy:1.18.11' // Compile only for interface types : compileOnly 'jakarta.servlet:jakarta.servlet-api:6.1.0' // spring 3 -> jakarta compileOnly 'javax.servlet:javax.servlet-api:4.0.1' // spring 2 -> javax diff --git a/agent/src/main/java/dev/aikido/agent/Agent.java b/agent/src/main/java/dev/aikido/agent/Agent.java index 3c380ca3..d88d1df5 100644 --- a/agent/src/main/java/dev/aikido/agent/Agent.java +++ b/agent/src/main/java/dev/aikido/agent/Agent.java @@ -31,8 +31,8 @@ public static void premain(String agentArgs, Instrumentation inst) { logger.error("Zen by Aikido requires Java 17 or newer. Current version: %d. The agent will not be loaded.", javaVersion); return; } - if (javaVersion > 24) { - logger.error("Zen by Aikido does not support Java %d (max supported version: 24). The agent will not be loaded.", javaVersion); + if (javaVersion > 25) { + logger.error("Zen by Aikido does not support Java %d (max supported version: 25). The agent will not be loaded.", javaVersion); return; } logger.info("Zen by Aikido v%s starting.", Config.pkgVersion); diff --git a/agent_api/build.gradle b/agent_api/build.gradle index e051f811..b0f758f1 100644 --- a/agent_api/build.gradle +++ b/agent_api/build.gradle @@ -1,7 +1,7 @@ plugins { id 'java' id 'jacoco' - id 'com.github.johnrengelman.shadow' version '7.1.0' + id 'com.gradleup.shadow' version '9.5.1' } jacoco { diff --git a/build.gradle b/build.gradle index 15b80b55..9e2b923a 100644 --- a/build.gradle +++ b/build.gradle @@ -15,6 +15,8 @@ subprojects { tasks.withType(JavaCompile) { options.encoding = 'UTF-8' } - sourceCompatibility = '16' - targetCompatibility = '16' + java { + sourceCompatibility = JavaVersion.VERSION_16 + targetCompatibility = JavaVersion.VERSION_16 + } } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 679a2597..5d5b9a03 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Thu Oct 10 12:48:48 CEST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/sample-apps/JavalinMySQLKotlin/pom.xml b/sample-apps/JavalinMySQLKotlin/pom.xml index 0de58bac..ce97e4da 100644 --- a/sample-apps/JavalinMySQLKotlin/pom.xml +++ b/sample-apps/JavalinMySQLKotlin/pom.xml @@ -11,7 +11,7 @@ 17 17 - 1.8.0 + 2.2.20 2.24.3 diff --git a/sample-apps/JavalinPostgres/build.gradle b/sample-apps/JavalinPostgres/build.gradle index f97da247..a4f3b5d4 100644 --- a/sample-apps/JavalinPostgres/build.gradle +++ b/sample-apps/JavalinPostgres/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java' - id 'com.github.johnrengelman.shadow' version '7.1.2' + id 'com.gradleup.shadow' version '9.5.1' } group = 'dev.aikido' diff --git a/sample-apps/JavalinPostgres/gradle/wrapper/gradle-wrapper.properties b/sample-apps/JavalinPostgres/gradle/wrapper/gradle-wrapper.properties index 55d53fd6..46debf55 100644 --- a/sample-apps/JavalinPostgres/gradle/wrapper/gradle-wrapper.properties +++ b/sample-apps/JavalinPostgres/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Tue Dec 17 13:31:53 CET 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/sample-apps/SpringBootHyperSQL/gradle/wrapper/gradle-wrapper.properties b/sample-apps/SpringBootHyperSQL/gradle/wrapper/gradle-wrapper.properties index ca025c83..a351597e 100644 --- a/sample-apps/SpringBootHyperSQL/gradle/wrapper/gradle-wrapper.properties +++ b/sample-apps/SpringBootHyperSQL/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-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/sample-apps/SpringBootMSSQL/gradle/wrapper/gradle-wrapper.properties b/sample-apps/SpringBootMSSQL/gradle/wrapper/gradle-wrapper.properties index ca025c83..a351597e 100644 --- a/sample-apps/SpringBootMSSQL/gradle/wrapper/gradle-wrapper.properties +++ b/sample-apps/SpringBootMSSQL/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-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/sample-apps/SpringBootMySQL/gradle/wrapper/gradle-wrapper.properties b/sample-apps/SpringBootMySQL/gradle/wrapper/gradle-wrapper.properties index ca025c83..a351597e 100644 --- a/sample-apps/SpringBootMySQL/gradle/wrapper/gradle-wrapper.properties +++ b/sample-apps/SpringBootMySQL/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-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/sample-apps/SpringBootPostgres/gradle/wrapper/gradle-wrapper.properties b/sample-apps/SpringBootPostgres/gradle/wrapper/gradle-wrapper.properties index ca025c83..a351597e 100644 --- a/sample-apps/SpringBootPostgres/gradle/wrapper/gradle-wrapper.properties +++ b/sample-apps/SpringBootPostgres/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-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/sample-apps/SpringMVCPostgresGroovy/build.gradle b/sample-apps/SpringMVCPostgresGroovy/build.gradle index 4fe04541..e8f2130a 100644 --- a/sample-apps/SpringMVCPostgresGroovy/build.gradle +++ b/sample-apps/SpringMVCPostgresGroovy/build.gradle @@ -8,6 +8,10 @@ plugins { group = 'com.example' version = '0.0.1-SNAPSHOT' +// Spring Boot 3.4.1 manages an older Groovy 4.0.x whose ASM can't run on JDK 25; +// Groovy 4.0.27+ adds Java 25 support. +ext['groovy.version'] = '4.0.28' + java { sourceCompatibility = '17' targetCompatibility = '17' diff --git a/sample-apps/SpringMVCPostgresGroovy/gradle/wrapper/gradle-wrapper.properties b/sample-apps/SpringMVCPostgresGroovy/gradle/wrapper/gradle-wrapper.properties index ca025c83..a351597e 100644 --- a/sample-apps/SpringMVCPostgresGroovy/gradle/wrapper/gradle-wrapper.properties +++ b/sample-apps/SpringMVCPostgresGroovy/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-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/sample-apps/SpringMVCPostgresKotlin/build.gradle b/sample-apps/SpringMVCPostgresKotlin/build.gradle index b322c260..06ff605c 100644 --- a/sample-apps/SpringMVCPostgresKotlin/build.gradle +++ b/sample-apps/SpringMVCPostgresKotlin/build.gradle @@ -1,6 +1,6 @@ plugins { - id 'org.jetbrains.kotlin.jvm' version '2.1.0' - id 'org.jetbrains.kotlin.plugin.spring' version '1.9.25' + id 'org.jetbrains.kotlin.jvm' version '2.2.20' + id 'org.jetbrains.kotlin.plugin.spring' version '2.2.20' id 'war' id 'org.springframework.boot' version '3.4.1' id 'io.spring.dependency-management' version '1.1.7' diff --git a/sample-apps/SpringMVCPostgresKotlin/gradle/wrapper/gradle-wrapper.properties b/sample-apps/SpringMVCPostgresKotlin/gradle/wrapper/gradle-wrapper.properties index ca025c83..a351597e 100644 --- a/sample-apps/SpringMVCPostgresKotlin/gradle/wrapper/gradle-wrapper.properties +++ b/sample-apps/SpringMVCPostgresKotlin/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-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/sample-apps/SpringWebfluxSampleApp/gradle/wrapper/gradle-wrapper.properties b/sample-apps/SpringWebfluxSampleApp/gradle/wrapper/gradle-wrapper.properties index ca025c83..a351597e 100644 --- a/sample-apps/SpringWebfluxSampleApp/gradle/wrapper/gradle-wrapper.properties +++ b/sample-apps/SpringWebfluxSampleApp/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-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME