apply plugin: 'io.spring.convention.spring-module' configurations { opensaml4Main { extendsFrom(optional, provided) } opensaml5Main { extendsFrom(optional, provided) } opensaml4Test { extendsFrom(opensaml4Main, tests) } opensaml5Test { extendsFrom(opensaml5Main, tests) } } sourceSets { opensaml4Main { java { compileClasspath += main.output + configurations.opensaml4Main srcDir 'src/opensaml4Main/java' } } opensaml5Main { java { compileClasspath += main.output + configurations.opensaml5Main srcDir 'src/opensaml5Main/java' } } opensaml4Test { java { compileClasspath += main.output + test.output + opensaml4Main.output + configurations.opensaml4Test srcDir 'src/opensaml4Test/java' } } opensaml5Test { java { compileClasspath += main.output + test.output + opensaml5Main.output + configurations.opensaml5Test srcDir 'src/opensaml5Test/java' } } } sourceSets.configureEach { set -> if (!set.name.containsIgnoreCase("main")) { return } def from = copySpec { from("$projectDir/src/$set.name/java/org/springframework/security/saml2/internal") } copy { into "$projectDir/src/$set.name/java/org/springframework/security/saml2/provider/service/authentication/logout" filter { line -> line.replaceAll(".saml2.internal", ".saml2.provider.service.authentication.logout") } with from } copy { into "$projectDir/src/$set.name/java/org/springframework/security/saml2/provider/service/authentication" filter { line -> line.replaceAll(".saml2.internal", ".saml2.provider.service.authentication") } with from } copy { into "$projectDir/src/$set.name/java/org/springframework/security/saml2/provider/service/metadata" filter { line -> line.replaceAll(".saml2.internal", ".saml2.provider.service.metadata") } with from } copy { into "$projectDir/src/$set.name/java/org/springframework/security/saml2/provider/service/web/authentication/logout" filter { line -> line.replaceAll(".saml2.internal", ".saml2.provider.service.web.authentication.logout") } with from } copy { into "$projectDir/src/$set.name/java/org/springframework/security/saml2/provider/service/web/authentication" filter { line -> line.replaceAll(".saml2.internal", ".saml2.provider.service.web.authentication") } with from } copy { into "$projectDir/src/$set.name/java/org/springframework/security/saml2/provider/service/web" filter { line -> line.replaceAll(".saml2.internal", ".saml2.provider.service.web") } with from } copy { into "$projectDir/src/$set.name/java/org/springframework/security/saml2/provider/service/registration" filter { line -> line.replaceAll(".saml2.internal", ".saml2.provider.service.registration") } with from } } dependencies { management platform(project(":spring-security-dependencies")) api project(':spring-security-web') api 'org.opensaml:opensaml-core' api ('org.opensaml:opensaml-saml-api') { exclude group: 'commons-logging', module: 'commons-logging' } api ('org.opensaml:opensaml-saml-impl') { exclude group: 'commons-logging', module: 'commons-logging' } opensaml5MainImplementation libs.org.opensaml.opensaml5.core.api opensaml5MainImplementation libs.org.opensaml.opensaml5.core.impl opensaml5MainImplementation (libs.org.opensaml.opensaml5.saml.api) { exclude group: 'commons-logging', module: 'commons-logging' } opensaml5MainImplementation (libs.org.opensaml.opensaml5.saml.impl) { exclude group: 'commons-logging', module: 'commons-logging' } provided 'jakarta.servlet:jakarta.servlet-api' optional 'com.fasterxml.jackson.core:jackson-databind' testImplementation 'com.squareup.okhttp3:mockwebserver' testImplementation "org.assertj:assertj-core" testImplementation "org.skyscreamer:jsonassert" 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-test" } jar { duplicatesStrategy = DuplicatesStrategy.EXCLUDE from sourceSets.opensaml4Main.output from sourceSets.opensaml5Main.output } sourcesJar { duplicatesStrategy = DuplicatesStrategy.EXCLUDE from sourceSets.opensaml4Main.allJava from sourceSets.opensaml5Main.allJava } testJar { duplicatesStrategy = DuplicatesStrategy.EXCLUDE from sourceSets.opensaml4Test.output from sourceSets.opensaml5Test.output } javadoc { classpath += sourceSets.opensaml4Main.runtimeClasspath + sourceSets.opensaml5Main.runtimeClasspath source += sourceSets.opensaml4Main.allJava + sourceSets.opensaml5Main.allJava } tasks.register("opensaml4Test", Test) { useJUnitPlatform() classpath += sourceSets.opensaml4Test.output } tasks.register("opensaml5Test", Test) { useJUnitPlatform() classpath += sourceSets.opensaml5Test.output } tasks.named("test") { dependsOn opensaml4Test dependsOn opensaml5Test }