diff --git a/.cirrus/.cirrus.yml b/.cirrus/.cirrus.yml index 7ec4d710d357..fb3570ee8b62 100644 --- a/.cirrus/.cirrus.yml +++ b/.cirrus/.cirrus.yml @@ -120,3 +120,17 @@ sq_analysis_task: - .cirrus/cirrus-sq-analysis.sh <<: *CLEANUP_GRADLE_CACHE_SCRIPT <<: *DEFAULT_ARTIFACTS_TEMPLATE + +rewrite_task: + depends_on: junit_task + container: + dockerfile: .cirrus/Dockerfile + cpu: 8 + memory: 10Gb + no_output_timeout: 2h + <<: *DEFAULT_TEMPLATE + <<: *GRADLE_CACHE_TEMPLATE + script: + - .cirrus/cirrus-rewrite.sh + <<: *CLEANUP_GRADLE_CACHE_SCRIPT + <<: *DEFAULT_ARTIFACTS_TEMPLATE \ No newline at end of file diff --git a/.cirrus/cirrus-rewrite.sh b/.cirrus/cirrus-rewrite.sh new file mode 100755 index 000000000000..0ebed409bf1d --- /dev/null +++ b/.cirrus/cirrus-rewrite.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -euo pipefail + +source .cirrus/cirrus-env + +./gradlew rewriteDryRun --build-cache -Dorg.gradle.jvmargs=-Xmx8G +# https://docs.openrewrite.org/reference/faq#im-getting-javalangoutofmemoryerror-java-heap-space-when-running-openrewrite diff --git a/build.gradle b/build.gradle index 99cadc2ec9c8..be15c5bad53c 100644 --- a/build.gradle +++ b/build.gradle @@ -3,20 +3,22 @@ import org.sonar.build.BlackBoxTest import static org.gradle.api.JavaVersion.VERSION_17 +// Ordered alphabetically plugins { - // Ordered alphabetically id 'com.github.hierynomus.license' version '0.16.1' - id "com.github.hierynomus.license-report" version "0.16.1" apply false - id 'com.gradleup.shadow' version '8.3.6' apply false + id 'com.github.hierynomus.license-report' version '0.16.1' apply false id 'com.google.protobuf' version '0.8.19' apply false - // dont update com.jfrog.artifactory, new version contains a bug - id 'com.jfrog.artifactory' version '5.2.5' - id "de.undercouch.download" version "5.6.0" apply false + id 'com.gradleup.shadow' version '8.3.6' apply false + id 'com.jfrog.artifactory' version '5.2.5' // dont update new version contains a bug + id 'de.undercouch.download' version '5.6.0' apply false id 'io.spring.dependency-management' version '1.1.7' - id "org.cyclonedx.bom" version "2.3.1" apply false + id 'org.cyclonedx.bom' version '2.3.1' apply false + id 'org.openrewrite.rewrite' version '7.12.1' apply false id 'org.sonarqube' version '6.2.0.5505' } +apply from: "$rootDir/gradle/rewrite.gradle" + if (!JavaVersion.current().isCompatibleWith(VERSION_17)) { throw new GradleException("JDK 17+ is required to perform this build. It's currently " + System.getProperty("java.home") + ".") } diff --git a/gradle/rewrite.gradle b/gradle/rewrite.gradle new file mode 100644 index 000000000000..02765bbd00f9 --- /dev/null +++ b/gradle/rewrite.gradle @@ -0,0 +1,54 @@ +project.apply plugin: "org.openrewrite.rewrite" + +rewrite { + activeRecipe( + "org.openrewrite.gradle.GradleBestPractices", + //"org.openrewrite.java.RemoveUnusedImports", + //"org.openrewrite.java.migrate.UpgradeToJava17", + //"org.openrewrite.java.recipes.JavaRecipeBestPractices", + //"org.openrewrite.java.recipes.RecipeNullabilityBestPractices", + //"org.openrewrite.java.recipes.RecipeTestingBestPractices", + //"org.openrewrite.staticanalysis.CodeCleanup", + //"org.openrewrite.staticanalysis.CommonStaticAnalysis", + //"org.openrewrite.staticanalysis.EqualsAvoidsNull", + //"org.openrewrite.staticanalysis.JavaApiBestPractices", + //"org.openrewrite.staticanalysis.LowercasePackage", + //"org.openrewrite.staticanalysis.MissingOverrideAnnotation", + //"org.openrewrite.staticanalysis.ModifierOrder", + //"org.openrewrite.staticanalysis.NoFinalizer", + //"org.openrewrite.staticanalysis.RemoveUnusedLocalVariables", + //"org.openrewrite.staticanalysis.RemoveUnusedPrivateFields", + //"org.openrewrite.staticanalysis.RemoveUnusedPrivateMethods", + //"org.openrewrite.staticanalysis.UnnecessaryThrows", + //"org.sonar.openrewrite.java.AddLicenseHeader", https://github.com/openrewrite/rewrite/issues/5762 + //"tech.picnic.errorprone.refasterrules.BigDecimalRulesRecipes", + //"tech.picnic.errorprone.refasterrules.BugCheckerRulesRecipes", + //"tech.picnic.errorprone.refasterrules.CharSequenceRulesRecipes", + //"tech.picnic.errorprone.refasterrules.ClassRulesRecipes", + //"tech.picnic.errorprone.refasterrules.CollectionRulesRecipes", bug + //"tech.picnic.errorprone.refasterrules.ComparatorRulesRecipes", + //"tech.picnic.errorprone.refasterrules.EqualityRulesRecipes", + //"tech.picnic.errorprone.refasterrules.FileRulesRecipes", + //"tech.picnic.errorprone.refasterrules.JUnitRulesRecipes", + //"tech.picnic.errorprone.refasterrules.MicrometerRulesRecipes", + //"tech.picnic.errorprone.refasterrules.NullRulesRecipes", + //"tech.picnic.errorprone.refasterrules.OptionalRulesRecipes", + //"tech.picnic.errorprone.refasterrules.PatternRulesRecipes", + //"tech.picnic.errorprone.refasterrules.PreconditionsRulesRecipes", + //"tech.picnic.errorprone.refasterrules.PrimitiveRulesRecipes", + //"tech.picnic.errorprone.refasterrules.StreamRulesRecipes", + //"tech.picnic.errorprone.refasterrules.StringRulesRecipes", + //"tech.picnic.errorprone.refasterrules.SuggestedFixRulesRecipes", + //"tech.picnic.errorprone.refasterrules.TimeRulesRecipes", + ) + exclusions.add("**DefaultAdminCredentialsVerifierImpl.java") // bug + exportDatatables = true + failOnDryRunResults = true +} + +dependencies { + //rewrite("org.openrewrite.recipe:rewrite-migrate-java:3.14.1") + //rewrite("org.openrewrite.recipe:rewrite-static-analysis:2.14.0") + //rewrite("org.openrewrite.recipe:rewrite-third-party:0.24.1") + rewrite("org.openrewrite.recipe:rewrite-rewrite:0.10.1") +} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 2c3521197d7c..1b33c55baabb 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 dedd5d1e69e6..92510698672a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,8 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists +distributionSha256Sum=bd71102213493060956ec229d946beee57158dbd89d0e62b91bca0fa2c5f3531 diff --git a/gradlew b/gradlew index f5feea6d6b11..f3b75f3b0d4f 100755 --- a/gradlew +++ b/gradlew @@ -86,8 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s -' "$PWD" ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum diff --git a/server/sonar-auth-github/build.gradle b/server/sonar-auth-github/build.gradle index 363886bb3326..074f5fba6ae7 100644 --- a/server/sonar-auth-github/build.gradle +++ b/server/sonar-auth-github/build.gradle @@ -31,6 +31,7 @@ dependencies { testImplementation project(path: ':server:sonar-webserver-api') testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' } diff --git a/server/sonar-auth-gitlab/build.gradle b/server/sonar-auth-gitlab/build.gradle index bc6749ecba6b..fbe9916fec27 100644 --- a/server/sonar-auth-gitlab/build.gradle +++ b/server/sonar-auth-gitlab/build.gradle @@ -29,6 +29,7 @@ dependencies { testImplementation 'org.mockito:mockito-junit-jupiter' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' } diff --git a/server/sonar-auth-ldap/build.gradle b/server/sonar-auth-ldap/build.gradle index cce816c74540..8d970f615091 100644 --- a/server/sonar-auth-ldap/build.gradle +++ b/server/sonar-auth-ldap/build.gradle @@ -22,6 +22,7 @@ dependencies { testImplementation project(":sonar-testing-ldap") testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' } diff --git a/server/sonar-auth-saml/build.gradle b/server/sonar-auth-saml/build.gradle index 997886ddf05d..629e925e13f5 100644 --- a/server/sonar-auth-saml/build.gradle +++ b/server/sonar-auth-saml/build.gradle @@ -27,6 +27,7 @@ dependencies { testImplementation testFixtures(project(':server:sonar-db-dao')) testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' } diff --git a/server/sonar-ce-task-projectanalysis/build.gradle b/server/sonar-ce-task-projectanalysis/build.gradle index 0e024680b5c6..77d49605a8a3 100644 --- a/server/sonar-ce-task-projectanalysis/build.gradle +++ b/server/sonar-ce-task-projectanalysis/build.gradle @@ -69,6 +69,7 @@ dependencies { testFixturesCompileOnly 'com.github.spotbugs:spotbugs-annotations' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' } diff --git a/server/sonar-ce-task/build.gradle b/server/sonar-ce-task/build.gradle index 146b13989eef..245a4efcc9c7 100644 --- a/server/sonar-ce-task/build.gradle +++ b/server/sonar-ce-task/build.gradle @@ -47,6 +47,7 @@ dependencies { testFixturesCompileOnly 'com.github.spotbugs:spotbugs-annotations' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' } diff --git a/server/sonar-ce/build.gradle b/server/sonar-ce/build.gradle index 0e0a7269003d..2d6104cf21df 100644 --- a/server/sonar-ce/build.gradle +++ b/server/sonar-ce/build.gradle @@ -39,6 +39,7 @@ dependencies { testImplementation testFixtures(project(':server:sonar-server-common')) testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' } diff --git a/server/sonar-db-core/build.gradle b/server/sonar-db-core/build.gradle index af766e406c0e..3c388725b6ae 100644 --- a/server/sonar-db-core/build.gradle +++ b/server/sonar-db-core/build.gradle @@ -33,6 +33,7 @@ dependencies { testImplementation project(':sonar-testing-harness') testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' testRuntimeOnly 'com.h2database:h2' testRuntimeOnly 'com.microsoft.sqlserver:mssql-jdbc' diff --git a/server/sonar-db-dao/build.gradle b/server/sonar-db-dao/build.gradle index 1fc05084c9cc..c11c134daf07 100644 --- a/server/sonar-db-dao/build.gradle +++ b/server/sonar-db-dao/build.gradle @@ -40,6 +40,7 @@ dependencies { testRuntimeOnly 'com.microsoft.sqlserver:mssql-jdbc' testRuntimeOnly 'com.oracle.database.jdbc:ojdbc11' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.postgresql:postgresql' testFixturesApi 'org.junit.jupiter:junit-jupiter-api' diff --git a/server/sonar-db-migration/build.gradle b/server/sonar-db-migration/build.gradle index 7e51703034d7..d62b6dedb8c3 100644 --- a/server/sonar-db-migration/build.gradle +++ b/server/sonar-db-migration/build.gradle @@ -44,6 +44,7 @@ dependencies { testRuntimeOnly 'com.microsoft.sqlserver:mssql-jdbc' testRuntimeOnly 'com.oracle.database.jdbc:ojdbc11' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' testRuntimeOnly 'org.postgresql:postgresql' } diff --git a/server/sonar-process/build.gradle b/server/sonar-process/build.gradle index 543bca3f05b9..060a977cbef8 100644 --- a/server/sonar-process/build.gradle +++ b/server/sonar-process/build.gradle @@ -36,6 +36,7 @@ dependencies { testImplementation project(':sonar-testing-harness') testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' } diff --git a/server/sonar-server-common/build.gradle b/server/sonar-server-common/build.gradle index 5533700fdaca..9a4c4479a767 100644 --- a/server/sonar-server-common/build.gradle +++ b/server/sonar-server-common/build.gradle @@ -70,6 +70,7 @@ dependencies { testFixturesImplementation 'org.junit.jupiter:junit-jupiter-api' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' } diff --git a/server/sonar-statemachine/build.gradle b/server/sonar-statemachine/build.gradle index d15abf7c90d5..9b158861bf91 100644 --- a/server/sonar-statemachine/build.gradle +++ b/server/sonar-statemachine/build.gradle @@ -20,6 +20,7 @@ dependencies { testImplementation 'org.mockito:mockito-junit-jupiter' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' } diff --git a/server/sonar-telemetry-core/build.gradle b/server/sonar-telemetry-core/build.gradle index 7ae81051fd70..7c6cdea9639d 100644 --- a/server/sonar-telemetry-core/build.gradle +++ b/server/sonar-telemetry-core/build.gradle @@ -21,6 +21,7 @@ dependencies { testImplementation 'org.mockito:mockito-core' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" } tasks.test { diff --git a/server/sonar-telemetry/build.gradle b/server/sonar-telemetry/build.gradle index 63ebe5fe9570..c028ba0fe473 100644 --- a/server/sonar-telemetry/build.gradle +++ b/server/sonar-telemetry/build.gradle @@ -27,6 +27,7 @@ dependencies { testImplementation testFixtures(project(':server:sonar-server-common')) testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" } tasks.test { diff --git a/server/sonar-webserver-auth/build.gradle b/server/sonar-webserver-auth/build.gradle index c7067302c766..bb1f68405e76 100644 --- a/server/sonar-webserver-auth/build.gradle +++ b/server/sonar-webserver-auth/build.gradle @@ -44,6 +44,7 @@ dependencies { testFixturesCompileOnly 'org.junit.jupiter:junit-jupiter-api' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' } diff --git a/server/sonar-webserver-common/build.gradle b/server/sonar-webserver-common/build.gradle index 38b5f22e1ab5..974663c13d2e 100644 --- a/server/sonar-webserver-common/build.gradle +++ b/server/sonar-webserver-common/build.gradle @@ -38,6 +38,7 @@ dependencies { testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' } diff --git a/server/sonar-webserver-core/build.gradle b/server/sonar-webserver-core/build.gradle index 99ab89c9f2d6..b1086ff177b5 100644 --- a/server/sonar-webserver-core/build.gradle +++ b/server/sonar-webserver-core/build.gradle @@ -78,6 +78,7 @@ dependencies { testImplementation project(':sonar-testing-harness') testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' runtimeOnly 'io.jsonwebtoken:jjwt-jackson' diff --git a/server/sonar-webserver-es/build.gradle b/server/sonar-webserver-es/build.gradle index d51c2b4f16bb..7967290b6b26 100644 --- a/server/sonar-webserver-es/build.gradle +++ b/server/sonar-webserver-es/build.gradle @@ -30,6 +30,7 @@ dependencies { testFixturesApi testFixtures(project(':server:sonar-server-common')) testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' } diff --git a/server/sonar-webserver-monitoring/build.gradle b/server/sonar-webserver-monitoring/build.gradle index d5fe638db08e..d274b4866139 100644 --- a/server/sonar-webserver-monitoring/build.gradle +++ b/server/sonar-webserver-monitoring/build.gradle @@ -16,6 +16,7 @@ dependencies { testImplementation 'org.sonarsource.api.plugin:sonar-plugin-api-test-fixtures' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' } diff --git a/server/sonar-webserver-pushapi/build.gradle b/server/sonar-webserver-pushapi/build.gradle index b21b754052d0..e71f15d06364 100644 --- a/server/sonar-webserver-pushapi/build.gradle +++ b/server/sonar-webserver-pushapi/build.gradle @@ -23,6 +23,7 @@ dependencies { testFixturesCompileOnly testFixtures(project(':server:sonar-webserver-ws')) testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' } diff --git a/server/sonar-webserver-webapi-v2/build.gradle b/server/sonar-webserver-webapi-v2/build.gradle index fb7b4af92e14..6bc9bf01aed0 100644 --- a/server/sonar-webserver-webapi-v2/build.gradle +++ b/server/sonar-webserver-webapi-v2/build.gradle @@ -30,6 +30,7 @@ dependencies { testRuntimeOnly 'org.apache.logging.log4j:log4j-core' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' } diff --git a/server/sonar-webserver-webapi/build.gradle b/server/sonar-webserver-webapi/build.gradle index 2ce5ac6dde76..717ae95c377c 100644 --- a/server/sonar-webserver-webapi/build.gradle +++ b/server/sonar-webserver-webapi/build.gradle @@ -57,6 +57,7 @@ dependencies { testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' } test { diff --git a/server/sonar-webserver/build.gradle b/server/sonar-webserver/build.gradle index b0c69ed86da1..c8d4f334c5cb 100644 --- a/server/sonar-webserver/build.gradle +++ b/server/sonar-webserver/build.gradle @@ -44,6 +44,7 @@ dependencies { testImplementation project(':sonar-testing-harness') testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' } diff --git a/sonar-application/bundled_plugins.gradle b/sonar-application/bundled_plugins.gradle index 2e060e4d1084..24a800519501 100644 --- a/sonar-application/bundled_plugins.gradle +++ b/sonar-application/bundled_plugins.gradle @@ -7,7 +7,7 @@ dependencies { bundledPlugin 'org.sonarsource.java:sonar-java-plugin' bundledPlugin 'org.sonarsource.java:sonar-java-symbolic-execution-plugin' bundledPlugin 'org.sonarsource.jacoco:sonar-jacoco-plugin' - bundledPlugin (group: 'org.sonarsource.javascript', name: 'sonar-javascript-plugin', classifier:'multi') + bundledPlugin ("org.sonarsource.javascript:sonar-javascript-plugin::multi") bundledPlugin 'org.sonarsource.php:sonar-php-plugin' bundledPlugin 'org.sonarsource.plugins.cayc:sonar-cayc-plugin' bundledPlugin 'org.sonarsource.python:sonar-python-plugin' diff --git a/sonar-core/build.gradle b/sonar-core/build.gradle index 8406f2f1e08d..ae4e01a3b51d 100644 --- a/sonar-core/build.gradle +++ b/sonar-core/build.gradle @@ -39,6 +39,7 @@ dependencies { testCompileOnly 'com.github.spotbugs:spotbugs-annotations' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' } diff --git a/sonar-plugin-api-impl/build.gradle b/sonar-plugin-api-impl/build.gradle index 978379e5f13a..8de7f18b5b54 100644 --- a/sonar-plugin-api-impl/build.gradle +++ b/sonar-plugin-api-impl/build.gradle @@ -28,6 +28,7 @@ dependencies { testImplementation 'org.sonarsource.api.plugin:sonar-plugin-api-test-fixtures' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' } diff --git a/sonar-scanner-protocol/build.gradle b/sonar-scanner-protocol/build.gradle index 4402ce004ecd..198bffe28aa1 100644 --- a/sonar-scanner-protocol/build.gradle +++ b/sonar-scanner-protocol/build.gradle @@ -22,6 +22,7 @@ dependencies { testImplementation 'org.assertj:assertj-core' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.13.4" testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' }