import java.util.concurrent.Callable apply plugin: 'io.spring.convention.spring-module' def includeProject = project(':spring-security-crypto') configurations { included api.extendsFrom included } dependencies { management platform(project(":spring-security-dependencies")) 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' included includeProject optional 'com.fasterxml.jackson.core:jackson-databind' optional 'io.projectreactor:reactor-core' optional 'javax.annotation:jsr250-api' optional 'net.sf.ehcache:ehcache' optional 'org.aspectj:aspectjrt' optional 'org.springframework:spring-jdbc' optional 'org.springframework:spring-tx' optional 'org.jetbrains.kotlinx:kotlinx-coroutines-reactor' testImplementation powerMock2Dependencies testImplementation 'commons-collections:commons-collections' testImplementation 'io.projectreactor:reactor-test' testImplementation 'org.skyscreamer:jsonassert' testImplementation 'org.slf4j:jcl-over-slf4j' testImplementation 'org.springframework:spring-test' testRuntimeOnly 'org.hsqldb:hsqldb' } task springVersion(type: org.gradle.api.tasks.WriteProperties) { outputFile = file("${buildDir}/versions/spring-security.versions") property("org.springframework:spring-core", springVersion()) } tasks.processResources { into('META-INF') { from project.tasks.springVersion.outputs } } tasks.jar.from { includeProject.sourceSets.main.output } tasks.sourcesJar.from {includeProject.sourceSets.main.java} 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 } }