import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import java.util.concurrent.Callable apply plugin: 'io.spring.convention.spring-module' apply plugin: 'kotlin' dependencies { management platform(project(":spring-security-dependencies")) api project(':spring-security-crypto') api 'org.springframework:spring-aop' api 'org.springframework:spring-beans' api 'org.springframework:spring-context' api 'org.springframework:spring-core' api 'org.springframework:spring-expression' api 'io.micrometer:micrometer-observation' optional 'com.fasterxml.jackson.core:jackson-databind' optional 'io.projectreactor:reactor-core' optional 'jakarta.annotation:jakarta.annotation-api' optional 'org.aspectj:aspectjrt' optional 'org.springframework:spring-jdbc' optional 'org.springframework:spring-tx' optional 'org.jetbrains.kotlinx:kotlinx-coroutines-reactor' testImplementation 'commons-collections:commons-collections' testImplementation 'io.projectreactor:reactor-test' testImplementation "org.assertj:assertj-core" testImplementation "org.junit.jupiter:junit-jupiter-api" testImplementation "org.junit.jupiter:junit-jupiter-params" testImplementation "org.junit.jupiter:junit-jupiter-engine" testImplementation "org.mockito:mockito-core" testImplementation "org.mockito:mockito-junit-jupiter" testImplementation "org.springframework:spring-core-test" testImplementation "org.springframework:spring-test" testImplementation 'org.skyscreamer:jsonassert' testImplementation 'org.springframework:spring-test' testImplementation 'org.jetbrains.kotlin:kotlin-reflect' testImplementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8' testImplementation 'io.mockk:mockk' testRuntimeOnly 'org.hsqldb:hsqldb' } task springVersion(type: org.gradle.api.tasks.WriteProperties) { destinationFile = file("${buildDir}/versions/spring-security.versions") property("org.springframework:spring-core", springVersion()) } tasks.processResources { into('META-INF') { from project.tasks.springVersion.outputs } } configure(project.tasks.withType(Test)) { doFirst { systemProperties['springSecurityVersion'] = version systemProperties['springVersion'] = springVersion().call() } } Callable springVersion() { return (Callable) { project.configurations.compileClasspath.resolvedConfiguration.resolvedArtifacts .find { it.name == 'spring-core' }.moduleVersion.id.version } } tasks.withType(KotlinCompile).configureEach { kotlinOptions { languageVersion = "1.7" apiVersion = "1.7" freeCompilerArgs = ["-Xjsr305=strict", "-Xsuppress-version-warnings"] jvmTarget = "17" } }