diff --git a/build.gradle b/build.gradle index fdb9398..9482114 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java' - id("io.github.gradle-nexus.publish-plugin") version "1.3.0" + alias(libs.plugins.nexus.publish) } def javaVersion = providers.environmentVariable("JAVA_BUILD_VERSION").getOrElse("17") @@ -24,7 +24,7 @@ allprojects { } subprojects { - if(it.parent.name == 'examples') { + if(it.parent.name == 'examples' || it.parent.name == 'test') { apply plugin: 'java' } else { apply plugin: 'java-library' @@ -32,14 +32,14 @@ subprojects { dependencies { // Testing - testImplementation "org.junit.jupiter:junit-jupiter-api:$junitJupiterVersion" - testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junitJupiterVersion" - testImplementation "org.mockito:mockito-core:$mockitoVersion" - testImplementation "org.mockito:mockito-junit-jupiter:$mockitoVersion" + testImplementation(libs.junit.jupiter.api) + testRuntimeOnly(libs.junit.jupiter.engine) + testImplementation(libs.mockito.core) + testImplementation(libs.mockito.junit.jupiter) } jacoco { - toolVersion = jacocoVersion + toolVersion = libs.versions.jacoco.get() } jacocoTestReport { @@ -60,21 +60,21 @@ subprojects { dependencies { // Lombok annotations to reduce boilerplate code - compileOnly "org.projectlombok:lombok:$lombokVersion" - annotationProcessor "org.projectlombok:lombok:$lombokVersion" - testCompileOnly "org.projectlombok:lombok:$lombokVersion" - testAnnotationProcessor "org.projectlombok:lombok:$lombokVersion" + compileOnly(libs.lombok) + annotationProcessor(libs.lombok) + testCompileOnly(libs.lombok) + testAnnotationProcessor(libs.lombok) } checkstyle { - toolVersion = checkstyleVersion + toolVersion = libs.versions.checkstyle.get() configDirectory.set(file("$rootProject.projectDir/config")) checkstyleMain.source = "src/main/java" } pmd { + toolVersion = libs.versions.pmd.get() consoleOutput = true ruleSets = ["$rootDir/ruleset.xml"] - toolVersion = pmdVersion } } diff --git a/examples/example-spring-boot-starter-web/build.gradle b/examples/example-spring-boot-starter-web/build.gradle index 2b3594a..40a0093 100644 --- a/examples/example-spring-boot-starter-web/build.gradle +++ b/examples/example-spring-boot-starter-web/build.gradle @@ -1,8 +1,8 @@ plugins { id 'java' - id 'org.springframework.boot' version "$springBootVersion" - id 'io.spring.dependency-management' version "$springDependencyManagementVersion" - id 'org.openapi.generator' version "$openApiGeneratorPluginVersion" + alias(libs.plugins.spring.boot) + alias(libs.plugins.spring.dependency.management) + alias(libs.plugins.openapi.generator) } @@ -12,9 +12,9 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-validation' - implementation "org.openapitools:jackson-databind-nullable:$openApiJacksonDatabindNullableVersion" - implementation "jakarta.validation:jakarta.validation-api:$jakartaValidationApiVersion" - implementation "io.swagger.core.v3:swagger-annotations:$swaggerAnnotationsVersion" + implementation(libs.openapi.tools.jacksonDatabindNullable) + implementation(libs.jakarta.validation.api) + implementation(libs.swagger.annotations) } test { diff --git a/examples/example-spring-boot-starter-webflux/build.gradle b/examples/example-spring-boot-starter-webflux/build.gradle index b8b8ec4..59eaef6 100644 --- a/examples/example-spring-boot-starter-webflux/build.gradle +++ b/examples/example-spring-boot-starter-webflux/build.gradle @@ -1,8 +1,8 @@ plugins { id 'java' - id 'org.springframework.boot' version "$springBootVersion" - id 'io.spring.dependency-management' version "$springDependencyManagementVersion" - id 'org.openapi.generator' version "$openApiGeneratorPluginVersion" + alias(libs.plugins.spring.boot) + alias(libs.plugins.spring.dependency.management) + alias(libs.plugins.openapi.generator) } dependencies { @@ -12,9 +12,9 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-webflux' implementation 'org.springframework.boot:spring-boot-starter-validation' - implementation "org.openapitools:jackson-databind-nullable:$openApiJacksonDatabindNullableVersion" - implementation "jakarta.validation:jakarta.validation-api:$jakartaValidationApiVersion" - implementation "io.swagger.core.v3:swagger-annotations:$swaggerAnnotationsVersion" + implementation(libs.openapi.tools.jacksonDatabindNullable) + implementation(libs.jakarta.validation.api) + implementation(libs.swagger.annotations) } test { diff --git a/examples/examples-common/build.gradle b/examples/examples-common/build.gradle index b5beb06..6c8545b 100644 --- a/examples/examples-common/build.gradle +++ b/examples/examples-common/build.gradle @@ -2,7 +2,7 @@ import org.springframework.boot.gradle.plugin.SpringBootPlugin plugins { id 'java-library' - id 'org.springframework.boot' version "$springBootVersion" + alias(libs.plugins.spring.boot) } dependencies { diff --git a/gradle.properties b/gradle.properties deleted file mode 100644 index c1cadab..0000000 --- a/gradle.properties +++ /dev/null @@ -1,20 +0,0 @@ -# Since we include webmvc project here, we should keep the versions in sync with it -springBootVersion=3.0.2 -springDependencyManagementVersion=1.1.0 - -# This should ideally be in sync with the version provided by DatadogPlugin -datadogStatsdVersion=2.13.0 -lombokVersion=1.18.24 - -checkstyleVersion=8.44 -jacocoVersion=0.8.7 -pmdVersion=6.55.0 -findBugsVersion=3.0.2 -junitJupiterVersion=5.9.1 -mockitoVersion=4.11.0 - -openApiGeneratorPluginVersion=6.2.1 - -openApiJacksonDatabindNullableVersion=0.2.4 -jakartaValidationApiVersion=3.0.2 -swaggerAnnotationsVersion=2.2.8 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..1675987 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,42 @@ +[versions] +spring-boot = "3.0.2" +spring-dependency-management = "1.1.0" +openapi-generator = "6.2.1" +openapi-tools = "0.2.4" +swagger = "2.2.8" +swagger-request-validator = "2.39.0" +jakarta-validation = "3.0.2" +lombok = "1.18.24" +commons-codec = "1.16.0" +find-bugs = "3.0.2" +gradle-nexus-publish-plugin = "1.3.0" +datadog-statsd = "2.13.0" +# Verify +checkstyle = "8.44" +pmd = "6.55.0" +jacoco = "0.8.7" +# Testing +mockito = "4.11.0" +junit-jupiter = "5.9.1" + +[libraries] +openapi-tools-jacksonDatabindNullable = { group = "org.openapitools", name = "jackson-databind-nullable", version.ref = "openapi-tools" } +swagger-annotations = { group = "io.swagger.core.v3", name = "swagger-annotations", version.ref = "swagger" } +swagger-request-validator-core = { group = "com.atlassian.oai", name = "swagger-request-validator-core", version.ref = "swagger-request-validator" } +jakarta-validation-api = { group = "jakarta.validation", name = "jakarta.validation-api", version.ref = "jakarta-validation" } +lombok = { group = "org.projectlombok", name = "lombok", version.ref = "lombok" } +datadog-statsdclient = { group = "com.datadoghq", name = "java-dogstatsd-client", version.ref = "datadog-statsd" } +commons-codec = { group = "commons-codec", name = "commons-codec", version.ref = "commons-codec" } +find-bugs = { group = "com.google.code.findbugs", name = "jsr305", version.ref = "find-bugs" } +# Testing +mockito-core = { group = "org.mockito", name = "mockito-core", version.ref = "mockito" } +mockito-junit-jupiter = { group = "org.mockito", name = "mockito-junit-jupiter", version.ref = "mockito" } +junit-jupiter-api = { group = "org.junit.jupiter", name = "junit-jupiter-api", version.ref = "junit-jupiter" } +junit-jupiter-engine = { group = "org.junit.jupiter", name = "junit-jupiter-engine", version.ref = "junit-jupiter" } + + +[plugins] +spring-boot = { id = "org.springframework.boot", version.ref = "spring-boot" } +spring-dependency-management = { id = "io.spring.dependency-management", version.ref = "spring-dependency-management" } +openapi-generator = { id = "org.openapi.generator", version.ref = "openapi-generator" } +nexus-publish = { id = "io.github.gradle-nexus.publish-plugin", version.ref = "gradle-nexus-publish-plugin" } diff --git a/metrics-reporter/metrics-reporter-datadog-spring-boot/build.gradle b/metrics-reporter/metrics-reporter-datadog-spring-boot/build.gradle index b10b40e..d481d02 100644 --- a/metrics-reporter/metrics-reporter-datadog-spring-boot/build.gradle +++ b/metrics-reporter/metrics-reporter-datadog-spring-boot/build.gradle @@ -1,7 +1,7 @@ import org.springframework.boot.gradle.plugin.SpringBootPlugin plugins { - id 'org.springframework.boot' version "$springBootVersion" apply false + alias(libs.plugins.spring.boot) apply false } apply from: "${rootDir}/gradle/publish-module.gradle" @@ -12,7 +12,7 @@ dependencies { testImplementation 'org.springframework.boot:spring-boot-test' api project(':metrics-reporter:metrics-reporter-datadog') - implementation "com.datadoghq:java-dogstatsd-client:$datadogStatsdVersion" + implementation(libs.datadog.statsdclient) implementation 'org.assertj:assertj-core' } diff --git a/metrics-reporter/metrics-reporter-datadog/build.gradle b/metrics-reporter/metrics-reporter-datadog/build.gradle index 9350d65..4047685 100644 --- a/metrics-reporter/metrics-reporter-datadog/build.gradle +++ b/metrics-reporter/metrics-reporter-datadog/build.gradle @@ -3,5 +3,5 @@ apply from: "${rootDir}/gradle/publish-module.gradle" dependencies { api project(':openapi-validation-api') - implementation "com.datadoghq:java-dogstatsd-client:$datadogStatsdVersion" + implementation(libs.datadog.statsdclient) } diff --git a/openapi-validation-core/build.gradle b/openapi-validation-core/build.gradle index c93175b..ffa8103 100644 --- a/openapi-validation-core/build.gradle +++ b/openapi-validation-core/build.gradle @@ -3,9 +3,9 @@ apply from: "${rootDir}/gradle/publish-module.gradle" dependencies { api project(':openapi-validation-api') - implementation 'com.atlassian.oai:swagger-request-validator-core:2.39.0' + implementation(libs.swagger.request.validator.core) constraints { - implementation('commons-codec:commons-codec:1.16.0') { + implementation(libs.commons.codec) { because 'Apache commons-codec before 1.13 is vulnerable to information exposure. See https://devhub.checkmarx.com/cve-details/Cxeb68d52e-5509/' } // implementation('org.yaml:snakeyaml:1.33') { diff --git a/spring-boot-starter/spring-boot-starter-core/build.gradle b/spring-boot-starter/spring-boot-starter-core/build.gradle index c0d3513..e6f5d12 100644 --- a/spring-boot-starter/spring-boot-starter-core/build.gradle +++ b/spring-boot-starter/spring-boot-starter-core/build.gradle @@ -1,7 +1,7 @@ import org.springframework.boot.gradle.plugin.SpringBootPlugin plugins { - id 'org.springframework.boot' version "$springBootVersion" apply false + alias(libs.plugins.spring.boot) apply false } apply from: "${rootDir}/gradle/publish-module.gradle" @@ -16,7 +16,7 @@ dependencies { compileOnly 'org.springframework.boot:spring-boot-autoconfigure' // TODO use spotbugs instead and also apply to all modules? - implementation "com.google.code.findbugs:jsr305:$findBugsVersion" + implementation(libs.find.bugs) testImplementation platform(SpringBootPlugin.BOM_COORDINATES) testImplementation 'org.springframework.boot:spring-boot-starter-test' diff --git a/spring-boot-starter/spring-boot-starter-web/build.gradle b/spring-boot-starter/spring-boot-starter-web/build.gradle index e67e02b..78822d1 100644 --- a/spring-boot-starter/spring-boot-starter-web/build.gradle +++ b/spring-boot-starter/spring-boot-starter-web/build.gradle @@ -1,7 +1,7 @@ import org.springframework.boot.gradle.plugin.SpringBootPlugin plugins { - id 'org.springframework.boot' version "$springBootVersion" apply false + alias(libs.plugins.spring.boot) apply false } apply from: "${rootDir}/gradle/publish-module.gradle" @@ -18,7 +18,7 @@ dependencies { implementation 'org.springframework.boot:spring-boot-autoconfigure' // TODO use spotbugs instead and also apply to all modules? - implementation "com.google.code.findbugs:jsr305:$findBugsVersion" + implementation(libs.find.bugs) testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework:spring-web' diff --git a/spring-boot-starter/spring-boot-starter-webflux/build.gradle b/spring-boot-starter/spring-boot-starter-webflux/build.gradle index 1329c34..1a6a9e7 100644 --- a/spring-boot-starter/spring-boot-starter-webflux/build.gradle +++ b/spring-boot-starter/spring-boot-starter-webflux/build.gradle @@ -1,7 +1,7 @@ import org.springframework.boot.gradle.plugin.SpringBootPlugin plugins { - id 'org.springframework.boot' version "$springBootVersion" apply false + alias(libs.plugins.spring.boot) apply false } apply from: "${rootDir}/gradle/publish-module.gradle" @@ -18,7 +18,7 @@ dependencies { implementation 'org.springframework.boot:spring-boot-autoconfigure' // TODO use spotbugs instead and also apply to all modules? - implementation "com.google.code.findbugs:jsr305:$findBugsVersion" + implementation(libs.find.bugs) testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework:spring-webflux'