2
0

spring-security-config.gradle 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
  2. import org.springframework.gradle.xsd.CreateVersionlessXsdTask
  3. import trang.RncToXsd
  4. apply plugin: 'io.spring.convention.spring-module'
  5. apply plugin: 'trang'
  6. apply plugin: 'kotlin'
  7. configurations {
  8. opensaml5 {
  9. extendsFrom(optional, tests)
  10. }
  11. }
  12. dependencies {
  13. management platform(project(":spring-security-dependencies"))
  14. // NB: Don't add other compile time dependencies to the config module as this breaks tooling
  15. api project(':spring-security-core')
  16. api 'org.springframework:spring-aop'
  17. api 'org.springframework:spring-beans'
  18. api 'org.springframework:spring-context'
  19. api 'org.springframework:spring-core'
  20. optional project(':spring-security-data')
  21. optional project(':spring-security-ldap')
  22. optional project(':spring-security-messaging')
  23. optional project(path: ':spring-security-saml2-service-provider')
  24. opensaml5 project(path: ':spring-security-saml2-service-provider', configuration: 'opensamlFiveMain')
  25. optional project(':spring-security-oauth2-client')
  26. optional project(':spring-security-oauth2-jose')
  27. optional project(':spring-security-oauth2-resource-server')
  28. optional project(':spring-security-rsocket')
  29. optional project(':spring-security-web')
  30. optional 'io.projectreactor:reactor-core'
  31. optional 'org.aspectj:aspectjweaver'
  32. optional 'org.springframework:spring-jdbc'
  33. optional 'org.springframework:spring-messaging'
  34. optional 'org.springframework:spring-tx'
  35. optional 'org.springframework:spring-webmvc'
  36. optional'org.springframework:spring-web'
  37. optional'org.springframework:spring-webflux'
  38. optional'org.springframework:spring-websocket'
  39. optional 'org.jetbrains.kotlin:kotlin-reflect'
  40. optional 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
  41. optional 'jakarta.annotation:jakarta.annotation-api'
  42. optional libs.webauthn4j.core
  43. provided 'jakarta.servlet:jakarta.servlet-api'
  44. testImplementation project(':spring-security-aspects')
  45. testImplementation project(':spring-security-cas')
  46. testImplementation project(':spring-security-test')
  47. testImplementation project(path : ':spring-security-core', configuration : 'tests')
  48. testImplementation project(path : ':spring-security-ldap', configuration : 'tests')
  49. testImplementation project(path : ':spring-security-oauth2-client', configuration : 'tests')
  50. testImplementation project(path : ':spring-security-oauth2-resource-server', configuration : 'tests')
  51. testImplementation project(':spring-security-saml2-service-provider')
  52. testImplementation project(path : ':spring-security-saml2-service-provider', configuration : 'tests')
  53. testImplementation project(path : ':spring-security-web', configuration : 'tests')
  54. testImplementation "jakarta.inject:jakarta.inject-api"
  55. testImplementation "org.assertj:assertj-core"
  56. testImplementation "org.junit.jupiter:junit-jupiter-api"
  57. testImplementation "org.junit.jupiter:junit-jupiter-params"
  58. testImplementation "org.junit.jupiter:junit-jupiter-engine"
  59. testImplementation "org.mockito:mockito-core"
  60. testImplementation "org.mockito:mockito-junit-jupiter"
  61. testImplementation "org.springframework:spring-test"
  62. testImplementation 'com.squareup.okhttp3:mockwebserver'
  63. testImplementation 'ch.qos.logback:logback-classic'
  64. testImplementation 'io.projectreactor.netty:reactor-netty'
  65. testImplementation 'io.rsocket:rsocket-transport-netty'
  66. testImplementation 'jakarta.annotation:jakarta.annotation-api'
  67. testImplementation 'jakarta.xml.bind:jakarta.xml.bind-api'
  68. testImplementation 'jakarta.websocket:jakarta.websocket-api'
  69. testImplementation 'jakarta.websocket:jakarta.websocket-client-api'
  70. testImplementation 'ldapsdk:ldapsdk:4.1'
  71. testImplementation('org.htmlunit:htmlunit') {
  72. exclude group: 'commons-logging', module: 'commons-logging'
  73. exclude group: 'xml-apis', module: 'xml-apis'
  74. }
  75. testImplementation "org.apache.directory.server:apacheds-core"
  76. testImplementation "org.apache.directory.server:apacheds-core-entry"
  77. testImplementation "org.apache.directory.server:apacheds-protocol-shared"
  78. testImplementation "org.apache.directory.server:apacheds-protocol-ldap"
  79. testImplementation "org.apache.directory.server:apacheds-server-jndi"
  80. testImplementation 'org.apache.directory.shared:shared-ldap'
  81. testImplementation "com.unboundid:unboundid-ldapsdk"
  82. testImplementation 'jakarta.persistence:jakarta.persistence-api'
  83. testImplementation "org.hibernate.orm:hibernate-core"
  84. testImplementation 'org.hsqldb:hsqldb'
  85. testImplementation 'org.mockito:mockito-core'
  86. testImplementation('org.seleniumhq.selenium:htmlunit3-driver') {
  87. exclude group: 'commons-logging', module: 'commons-logging'
  88. exclude group: 'xml-apis', module: 'xml-apis'
  89. }
  90. testImplementation('org.seleniumhq.selenium:selenium-java') {
  91. exclude group: 'commons-logging', module: 'commons-logging'
  92. exclude group: 'io.netty', module: 'netty'
  93. }
  94. testImplementation 'org.springframework.ldap:spring-ldap-core'
  95. testImplementation 'org.springframework:spring-expression'
  96. testImplementation 'org.springframework:spring-jdbc'
  97. testImplementation 'org.springframework:spring-orm'
  98. testImplementation 'org.springframework:spring-tx'
  99. testImplementation 'org.springframework:spring-core-test'
  100. testImplementation ('org.springframework.data:spring-data-jpa') {
  101. exclude group: 'org.aspectj', module: 'aspectjrt'
  102. }
  103. testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core'
  104. testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-reactor'
  105. testImplementation 'io.mockk:mockk'
  106. testImplementation 'org.junit.platform:junit-platform-launcher'
  107. testImplementation 'org.apache.maven.resolver:maven-resolver-connector-basic'
  108. testImplementation ('org.apache.maven.resolver:maven-resolver-impl') {
  109. exclude(group: "javax.annotation", module: "javax.annotation-api")
  110. }
  111. testImplementation ('org.apache.maven:maven-resolver-provider') {
  112. exclude(group: "javax.inject", module: "javax.inject")
  113. exclude(group: "javax.annotation", module: "javax.annotation-api")
  114. }
  115. testImplementation ('org.apache.maven.resolver:maven-resolver-transport-http') {
  116. exclude group: "org.slf4j", module: "jcl-over-slf4j"
  117. }
  118. testImplementation libs.org.instancio.instancio.junit
  119. testRuntimeOnly 'org.hsqldb:hsqldb'
  120. }
  121. def rncToXsd = tasks.named('rncToXsd', RncToXsd)
  122. rncToXsd.configure {
  123. rncDir = file('src/main/resources/org/springframework/security/config/')
  124. xsdDir = rncDir
  125. xslFile = new File(rncDir, 'spring-security.xsl')
  126. }
  127. def versionlessXsd = tasks.register("versionlessXsd", CreateVersionlessXsdTask) {
  128. inputFiles.from(rncToXsd.map { task -> project.fileTree(task.xsdDir) })
  129. versionlessXsdFile = project.layout.buildDirectory.file("versionlessXsd/spring-security.xsd")
  130. }
  131. tasks.named('processResources', ProcessResources).configure {
  132. from(versionlessXsd) {
  133. into 'org/springframework/security/config/'
  134. }
  135. from(rncToXsd) {
  136. duplicatesStrategy DuplicatesStrategy.EXCLUDE
  137. into 'org/springframework/security/config/'
  138. }
  139. }
  140. tasks.named('sourcesJar', Jar).configure {
  141. from(rncToXsd) {
  142. duplicatesStrategy DuplicatesStrategy.EXCLUDE
  143. into 'org/springframework/security/config/'
  144. }
  145. }
  146. tasks.withType(KotlinCompile).configureEach {
  147. kotlinOptions {
  148. languageVersion = "1.7"
  149. apiVersion = "1.7"
  150. freeCompilerArgs = ["-Xjsr305=strict", "-Xsuppress-version-warnings"]
  151. jvmTarget = "17"
  152. }
  153. }
  154. configure(project.tasks.withType(Test)) {
  155. doFirst {
  156. systemProperties['springSecurityVersion'] = version
  157. }
  158. }
  159. tasks.register("opensaml5Test", Test) {
  160. filter {
  161. includeTestsMatching "org.springframework.security.config.annotation.web.configurers.saml2.*"
  162. }
  163. useJUnitPlatform()
  164. classpath = sourceSets.main.output + sourceSets.test.output + configurations.opensaml5
  165. }
  166. tasks.named("check") {
  167. dependsOn opensaml5Test
  168. }