buildscript { dependencies { classpath "io.spring.javaformat:spring-javaformat-gradle-plugin:$springJavaformatVersion" classpath 'io.spring.nohttp:nohttp-gradle:0.0.6.RELEASE' classpath "io.freefair.gradle:aspectj-plugin:5.3.3.3" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" } repositories { maven { url 'https://repo.spring.io/plugins-snapshot' } maven { url 'https://plugins.gradle.org/m2/' } } } apply plugin: 'io.spring.nohttp' apply plugin: 'locks' apply plugin: 'io.spring.convention.root' apply plugin: 'org.jetbrains.kotlin.jvm' apply plugin: 'org.springframework.security.update-dependencies' apply plugin: 'org.springframework.security.sagan' group = 'org.springframework.security' description = 'Spring Security' ext.snapshotBuild = version.contains("SNAPSHOT") ext.releaseBuild = version.contains("SNAPSHOT") ext.milestoneBuild = !(snapshotBuild || releaseBuild) repositories { mavenCentral() } tasks.named("saganCreateRelease") { referenceDocUrl = "https://docs.spring.io/spring-security/site/docs/{version}/reference/html5/" apiDocUrl = "https://docs.spring.io/spring-security/site/docs/{version}/api/" } updateDependenciesSettings { gitHub { organization = "spring-projects" repository = "spring-security" } addFiles({ return [ project.file("buildSrc/src/main/java/io/spring/gradle/convention/AsciidoctorConventionPlugin.java"), project.file("buildSrc/src/main/groovy/io/spring/gradle/convention/CheckstylePlugin.groovy") ] }) dependencyExcludes { majorVersionBump() alphaBetaVersions() releaseCandidatesVersions() milestoneVersions() snapshotVersions() addRule { components -> components.withModule("commons-codec:commons-codec") { selection -> ModuleComponentIdentifier candidate = selection.getCandidate(); if (!candidate.getVersion().equals(selection.getCurrentVersion())) { selection.reject("commons-codec updates break saml tests"); } } components.withModule("org.python:jython") { selection -> ModuleComponentIdentifier candidate = selection.getCandidate(); if (!candidate.getVersion().equals(selection.getCurrentVersion())) { selection.reject("jython updates break integration tests"); } } components.withModule("com.nimbusds:nimbus-jose-jwt") { selection -> ModuleComponentIdentifier candidate = selection.getCandidate(); if (!candidate.getVersion().equals(selection.getCurrentVersion())) { selection.reject("nimbus-jose-jwt gets updated when oauth2-oidc-sdk is updated to ensure consistency"); } } components.all { selection -> ModuleComponentIdentifier candidate = selection.getCandidate(); // Do not compare version due to multiple versions existing // will cause opensaml 3.x to be updated to 4.x if (candidate.getGroup().equals("org.opensaml")) { selection.reject("org.opensaml maintains two different versions, so it must be updated manually"); } } } } } subprojects { plugins.withType(JavaPlugin) { project.sourceCompatibility='1.8' } tasks.withType(JavaCompile) { options.encoding = "UTF-8" } } allprojects { if (!['spring-security-bom', 'spring-security-docs'].contains(project.name)) { apply plugin: 'io.spring.javaformat' apply plugin: 'checkstyle' pluginManager.withPlugin("io.spring.convention.checkstyle", { plugin -> configure(plugin) { dependencies { checkstyle "io.spring.javaformat:spring-javaformat-checkstyle:$springJavaformatVersion" } checkstyle { toolVersion = '8.34' } } }) if (project.name.contains('sample')) { tasks.whenTaskAdded { task -> if (task.name.contains('format') || task.name.contains('checkFormat') || task.name.contains("checkstyle")) { task.enabled = false } } } } } if (hasProperty('buildScan')) { buildScan { termsOfServiceUrl = 'https://gradle.com/terms-of-service' termsOfServiceAgree = 'yes' } } nohttp { allowlistFile = project.file("etc/nohttp/allowlist.lines") source.exclude "buildSrc/build/**" }