diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index 87120810..743e940b 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -13,15 +13,14 @@ repositories { } dependencies { - implementation "com.github.ben-manes:gradle-versions-plugin:0.38.0" - implementation "io.github.gradle-nexus:publish-plugin:1.1.0" - implementation "io.spring.javaformat:spring-javaformat-gradle-plugin:0.0.41" - implementation "io.spring.nohttp:nohttp-gradle:0.0.11" - implementation "org.asciidoctor:asciidoctor-gradle-jvm:3.3.2" - implementation "org.asciidoctor:asciidoctor-gradle-jvm-pdf:3.3.2" - implementation "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10" - implementation "org.hidetake:gradle-ssh-plugin:2.10.1" - implementation "org.jfrog.buildinfo:build-info-extractor-gradle:4.29.4" - implementation "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.7.1" - implementation "org.springframework:spring-core:6.0.11" + implementation libs.com.github.ben.manes.gradle.versions.plugin + implementation libs.io.github.gradle.nexus.publish.plugin + implementation libs.io.spring.javaformat.spring.javaformat.gradle.plugin + implementation libs.io.spring.nohttp.nohttp.gradle + implementation libs.org.asciidoctor.asciidoctor.gradle.jvm.plugin + implementation libs.org.asciidoctor.asciidoctor.gradle.jvm.pdf.plugin + implementation libs.org.jetbrains.kotlin.kotlin.gradle.plugin + implementation libs.org.hidetake.gradle.ssh.plugin + implementation libs.org.jfrog.buildinfo.build.info.extractor.gradle + implementation libs.org.sonarsource.scanner.gradle.sonarqube.gradle.plugin } diff --git a/buildSrc/settings.gradle b/buildSrc/settings.gradle new file mode 100644 index 00000000..0aba7326 --- /dev/null +++ b/buildSrc/settings.gradle @@ -0,0 +1,7 @@ +dependencyResolutionManagement { + versionCatalogs { + libs { + from(files("../gradle/libs.versions.toml")) + } + } +} diff --git a/buildSrc/src/main/java/org/springframework/gradle/checkstyle/SpringJavaCheckstylePlugin.java b/buildSrc/src/main/java/org/springframework/gradle/checkstyle/SpringJavaCheckstylePlugin.java index 1b482b0b..15e5d89d 100644 --- a/buildSrc/src/main/java/org/springframework/gradle/checkstyle/SpringJavaCheckstylePlugin.java +++ b/buildSrc/src/main/java/org/springframework/gradle/checkstyle/SpringJavaCheckstylePlugin.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,13 +17,14 @@ package org.springframework.gradle.checkstyle; import java.io.File; -import java.util.Objects; import javax.annotation.Nullable; import io.spring.javaformat.gradle.tasks.CheckFormat; import org.gradle.api.Plugin; import org.gradle.api.Project; +import org.gradle.api.artifacts.VersionCatalog; +import org.gradle.api.artifacts.VersionCatalogsExtension; import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.quality.CheckstyleExtension; import org.gradle.api.plugins.quality.CheckstylePlugin; @@ -36,12 +37,6 @@ import org.gradle.api.plugins.quality.CheckstylePlugin; */ public class SpringJavaCheckstylePlugin implements Plugin { private static final String CHECKSTYLE_DIR = "etc/checkstyle"; - private static final String SPRING_JAVAFORMAT_VERSION_PROPERTY = "springJavaformatVersion"; - private static final String DEFAULT_SPRING_JAVAFORMAT_VERSION = "0.0.41"; - private static final String NOHTTP_CHECKSTYLE_VERSION_PROPERTY = "nohttpCheckstyleVersion"; - private static final String DEFAULT_NOHTTP_CHECKSTYLE_VERSION = "0.0.11"; - private static final String CHECKSTYLE_TOOL_VERSION_PROPERTY = "checkstyleToolVersion"; - private static final String DEFAULT_CHECKSTYLE_TOOL_VERSION = "8.34"; private static final String SPRING_JAVAFORMAT_EXCLUDE_PACKAGES_PROPERTY = "springJavaformatExcludePackages"; @Override @@ -51,15 +46,14 @@ public class SpringJavaCheckstylePlugin implements Plugin { if (checkstyleDir.exists() && checkstyleDir.isDirectory()) { project.getPluginManager().apply(CheckstylePlugin.class); - // NOTE: See gradle.properties#springJavaformatVersion for actual version number - project.getDependencies().add("checkstyle", "io.spring.javaformat:spring-javaformat-checkstyle:" + getSpringJavaformatVersion(project)); - // NOTE: See gradle.properties#nohttpCheckstyleVersion for actual version number - project.getDependencies().add("checkstyle", "io.spring.nohttp:nohttp-checkstyle:" + getNohttpCheckstyleVersion(project)); + VersionCatalog versionCatalog = project.getRootProject().getExtensions().getByType(VersionCatalogsExtension.class).named("libs"); + + project.getDependencies().add("checkstyle", versionCatalog.findLibrary("io-spring-javaformat-spring-javaformat-checkstyle").get()); + project.getDependencies().add("checkstyle", versionCatalog.findLibrary("io-spring-nohttp-nohttp-checkstyle").get()); CheckstyleExtension checkstyle = project.getExtensions().getByType(CheckstyleExtension.class); checkstyle.getConfigDirectory().set(checkstyleDir); - // NOTE: See gradle.properties#checkstyleToolVersion for actual version number - checkstyle.setToolVersion(getCheckstyleToolVersion(project)); + checkstyle.setToolVersion("8.34"); } // Configure checkFormat task @@ -73,30 +67,6 @@ public class SpringJavaCheckstylePlugin implements Plugin { }); } - private static String getSpringJavaformatVersion(Project project) { - String springJavaformatVersion = DEFAULT_SPRING_JAVAFORMAT_VERSION; - if (project.hasProperty(SPRING_JAVAFORMAT_VERSION_PROPERTY)) { - springJavaformatVersion = Objects.requireNonNull(project.findProperty(SPRING_JAVAFORMAT_VERSION_PROPERTY)).toString(); - } - return springJavaformatVersion; - } - - private static String getNohttpCheckstyleVersion(Project project) { - String nohttpCheckstyleVersion = DEFAULT_NOHTTP_CHECKSTYLE_VERSION; - if (project.hasProperty(NOHTTP_CHECKSTYLE_VERSION_PROPERTY)) { - nohttpCheckstyleVersion = Objects.requireNonNull(project.findProperty(NOHTTP_CHECKSTYLE_VERSION_PROPERTY)).toString(); - } - return nohttpCheckstyleVersion; - } - - private static String getCheckstyleToolVersion(Project project) { - String checkstyleToolVersion = DEFAULT_CHECKSTYLE_TOOL_VERSION; - if (project.hasProperty(CHECKSTYLE_TOOL_VERSION_PROPERTY)) { - checkstyleToolVersion = Objects.requireNonNull(project.findProperty(CHECKSTYLE_TOOL_VERSION_PROPERTY)).toString(); - } - return checkstyleToolVersion; - } - @Nullable private String[] getSpringJavaformatExcludePackages(Project project) { String springJavaformatExcludePackages = (String) project.findProperty(SPRING_JAVAFORMAT_EXCLUDE_PACKAGES_PROPERTY); diff --git a/buildSrc/src/main/java/org/springframework/gradle/classpath/SpringCheckClasspathForProhibitedDependenciesPlugin.java b/buildSrc/src/main/java/org/springframework/gradle/classpath/SpringCheckClasspathForProhibitedDependenciesPlugin.java index 4b92b2e0..f0a7cd03 100644 --- a/buildSrc/src/main/java/org/springframework/gradle/classpath/SpringCheckClasspathForProhibitedDependenciesPlugin.java +++ b/buildSrc/src/main/java/org/springframework/gradle/classpath/SpringCheckClasspathForProhibitedDependenciesPlugin.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2022 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,8 +25,6 @@ import org.gradle.api.tasks.SourceSetContainer; import org.gradle.api.tasks.TaskProvider; import org.gradle.language.base.plugins.LifecycleBasePlugin; -import org.springframework.util.StringUtils; - /** * @author Andy Wilkinson * @author Rob Winch @@ -55,7 +53,7 @@ public class SpringCheckClasspathForProhibitedDependenciesPlugin implements Plug } private void createProhibitedDependenciesCheck(Configuration classpath, Project project) { - String taskName = "check" + StringUtils.capitalize(classpath.getName() + "ForProhibitedDependencies"); + String taskName = "check" + capitalize(classpath.getName() + "ForProhibitedDependencies"); TaskProvider checkClasspathTask = project.getTasks().register(taskName, CheckClasspathForProhibitedDependencies.class, (checkClasspath) -> { checkClasspath.setGroup(LifecycleBasePlugin.CHECK_TASK_NAME); @@ -64,4 +62,25 @@ public class SpringCheckClasspathForProhibitedDependenciesPlugin implements Plug }); project.getTasks().named(SpringCheckProhibitedDependenciesLifecyclePlugin.CHECK_PROHIBITED_DEPENDENCIES_TASK_NAME, (checkProhibitedTask) -> checkProhibitedTask.dependsOn(checkClasspathTask)); } + + private static String capitalize(String str) { + if (!hasLength(str)) { + return str; + } else { + char baseChar = str.charAt(0); + char updatedChar = Character.toUpperCase(baseChar); + if (baseChar == updatedChar) { + return str; + } else { + char[] chars = str.toCharArray(); + chars[0] = updatedChar; + return new String(chars); + } + } + } + + private static boolean hasLength(String str) { + return str != null && !str.isEmpty(); + } + } diff --git a/buildSrc/src/main/java/org/springframework/gradle/jacoco/SpringJacocoPlugin.java b/buildSrc/src/main/java/org/springframework/gradle/jacoco/SpringJacocoPlugin.java index 010e42bd..91c4793d 100644 --- a/buildSrc/src/main/java/org/springframework/gradle/jacoco/SpringJacocoPlugin.java +++ b/buildSrc/src/main/java/org/springframework/gradle/jacoco/SpringJacocoPlugin.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,8 +16,6 @@ package org.springframework.gradle.jacoco; -import java.util.Objects; - import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.plugins.JavaPlugin; @@ -31,8 +29,6 @@ import org.gradle.testing.jacoco.plugins.JacocoPluginExtension; * @author Steve Riesenberg */ public class SpringJacocoPlugin implements Plugin { - private static final String JACOCO_TOOL_VERSION_PROPERTY = "jacocoToolVersion"; - private static final String DEFAULT_JACOCO_TOOL_VERSION = "0.8.7"; @Override public void apply(Project project) { @@ -41,16 +37,8 @@ public class SpringJacocoPlugin implements Plugin { project.getTasks().getByName("check").dependsOn(project.getTasks().getByName("jacocoTestReport")); JacocoPluginExtension jacoco = project.getExtensions().getByType(JacocoPluginExtension.class); - // NOTE: See gradle.properties#jacocoToolVersion for actual version number - jacoco.setToolVersion(getJacocoToolVersion(project)); + jacoco.setToolVersion("0.8.7"); }); } - private static String getJacocoToolVersion(Project project) { - String jacocoToolVersion = DEFAULT_JACOCO_TOOL_VERSION; - if (project.hasProperty(JACOCO_TOOL_VERSION_PROPERTY)) { - jacocoToolVersion = Objects.requireNonNull(project.findProperty(JACOCO_TOOL_VERSION_PROPERTY)).toString(); - } - return jacocoToolVersion; - } } diff --git a/dependencies/spring-authorization-server-dependencies.gradle b/dependencies/spring-authorization-server-dependencies.gradle index 4a8c45e1..25a2b6fd 100644 --- a/dependencies/spring-authorization-server-dependencies.gradle +++ b/dependencies/spring-authorization-server-dependencies.gradle @@ -7,18 +7,18 @@ javaPlatform { } dependencies { - api platform("org.springframework:spring-framework-bom:$springFrameworkVersion") - api platform("org.springframework.security:spring-security-bom:$springSecurityVersion") - api platform("com.fasterxml.jackson:jackson-bom:2.16.2") + api platform(libs.org.springframework.spring.framework.bom) + api platform(libs.org.springframework.security.spring.security.bom) + api platform(libs.com.fasterxml.jackson.jackson.bom) constraints { - api "com.nimbusds:nimbus-jose-jwt:9.37.3" - api "jakarta.servlet:jakarta.servlet-api:6.0.0" - api "org.junit.jupiter:junit-jupiter:5.10.3" - api "org.assertj:assertj-core:3.24.2" - api "org.mockito:mockito-core:4.11.0" - api "com.squareup.okhttp3:mockwebserver:4.12.0" - api "com.squareup.okhttp3:okhttp:4.12.0" - api "com.jayway.jsonpath:json-path:2.8.0" - api "org.hsqldb:hsqldb:2.7.3" + api libs.com.nimbusds.nimbus.jose.jwt + api libs.jakarta.servlet.jakarta.servlet.api + api libs.org.junit.jupiter.junit.jupiter + api libs.org.assertj.assertj.core + api libs.org.mockito.mockito.core + api libs.com.squareup.okhttp3.mockwebserver + api libs.com.squareup.okhttp3.okhttp + api libs.com.jayway.jsonpath.json.path + api libs.org.hsqldb.hsqldb } } diff --git a/gradle.properties b/gradle.properties index eb4384df..ade6eaf0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,9 +2,3 @@ version=1.2.7-SNAPSHOT org.gradle.jvmargs=-Xmx3g -XX:+HeapDumpOnOutOfMemoryError org.gradle.parallel=true org.gradle.caching=true -springFrameworkVersion=6.1.12 -springSecurityVersion=6.2.6 -springJavaformatVersion=0.0.41 -checkstyleToolVersion=8.34 -nohttpCheckstyleVersion=0.0.11 -jacocoToolVersion=0.8.7 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 00000000..bb30b8f7 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,39 @@ +[versions] +org-springframework = "6.1.12" +org-springframework-security = "6.2.6" +com-fasterxml-jackson = "2.15.4" +nimbus-jose-jwt = "9.37.3" +com-squareup-okhttp3 = "4.12.0" +io-spring-javaformat = "0.0.41" +io-spring-nohttp = "0.0.11" + +[libraries] +org-springframework-spring-framework-bom = { module = "org.springframework:spring-framework-bom", version.ref = "org-springframework" } +org-springframework-security-spring-security-bom = { module = "org.springframework.security:spring-security-bom", version.ref = "org-springframework-security" } +com-fasterxml-jackson-jackson-bom = { module = "com.fasterxml.jackson:jackson-bom", version.ref = "com-fasterxml-jackson" } +com-nimbusds-nimbus-jose-jwt = { module = "com.nimbusds:nimbus-jose-jwt", version.ref = "nimbus-jose-jwt" } +jakarta-servlet-jakarta-servlet-api = "jakarta.servlet:jakarta.servlet-api:6.0.0" +org-junit-jupiter-junit-jupiter = "org.junit.jupiter:junit-jupiter:5.10.3" +org-assertj-assertj-core = "org.assertj:assertj-core:3.24.2" +org-mockito-mockito-core = "org.mockito:mockito-core:4.11.0" +com-squareup-okhttp3-mockwebserver = { module = "com.squareup.okhttp3:mockwebserver", version.ref = "com-squareup-okhttp3" } +com-squareup-okhttp3-okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "com-squareup-okhttp3" } +com-jayway-jsonpath-json-path = "com.jayway.jsonpath:json-path:2.8.0" +org-hsqldb-hsqldb = "org.hsqldb:hsqldb:2.7.3" + +# buildSrc dependencies +com-github-ben-manes-gradle-versions-plugin = "com.github.ben-manes:gradle-versions-plugin:0.38.0" +io-github-gradle-nexus-publish-plugin = "io.github.gradle-nexus:publish-plugin:1.1.0" +io-spring-javaformat-spring-javaformat-checkstyle = { module = "io.spring.javaformat:spring-javaformat-checkstyle", version.ref = "io-spring-javaformat" } +io-spring-javaformat-spring-javaformat-gradle-plugin = { module = "io.spring.javaformat:spring-javaformat-gradle-plugin", version.ref = "io-spring-javaformat" } +io-spring-nohttp-nohttp-checkstyle = { module = "io.spring.nohttp:nohttp-checkstyle", version.ref = "io-spring-nohttp" } +io-spring-nohttp-nohttp-gradle = { module = "io.spring.nohttp:nohttp-gradle", version.ref = "io-spring-nohttp" } +org-asciidoctor-asciidoctor-gradle-jvm-plugin = "org.asciidoctor:asciidoctor-gradle-jvm:3.3.2" +org-asciidoctor-asciidoctor-gradle-jvm-pdf-plugin = "org.asciidoctor:asciidoctor-gradle-jvm-pdf:3.3.2" +org-jetbrains-kotlin-kotlin-gradle-plugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10" +org-hidetake-gradle-ssh-plugin = "org.hidetake:gradle-ssh-plugin:2.10.1" +org-jfrog-buildinfo-build-info-extractor-gradle = "org.jfrog.buildinfo:build-info-extractor-gradle:4.29.4" +org-sonarsource-scanner-gradle-sonarqube-gradle-plugin = "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.7.1" + +[plugins] +org-gradle-wrapper-upgrade = "org.gradle.wrapper-upgrade:0.11.4"