spring-security-samples-xml-casserver.gradle 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import org.apache.tools.ant.filters.ReplaceTokens
  2. apply plugin: 'io.spring.convention.spring-sample'
  3. def keystore = "$rootDir/samples/certificates/server.jks"
  4. def password = 'password'
  5. configurations {
  6. casServer
  7. }
  8. dependencies {
  9. casServer "org.jasig.cas:cas-server-webapp:4.0.0@war"
  10. }
  11. task casServerOverlay(type: Sync) {
  12. def war = configurations.casServer.resolve().toArray()[0]
  13. def warName = war.name.replace('.war','-custom')
  14. def overlayDir = file('src/main/webapp')
  15. def explodedWar = file("$buildDir/tmp/${warName}")
  16. ext.customWar = file("$buildDir/tmp/${warName}.war")
  17. ext.tokens = [logLevel: 'INFO']
  18. inputs.files(war, overlayDir)
  19. inputs.property('tokens',{tokens})
  20. outputs.files (customWar,explodedWar,file("$buildDir/tmp/expandedArchives"))
  21. from zipTree(war)
  22. from (overlayDir) {
  23. filter(ReplaceTokens,tokens: tokens)
  24. }
  25. into explodedWar
  26. doLast {
  27. if(customWar.exists()) {
  28. customWar.delete()
  29. }
  30. ant.zip(destfile: customWar, baseDir: explodedWar)
  31. }
  32. }
  33. casServerOverlay.metaClass.setLogLevel { level ->
  34. tokens['logLevel'] = level
  35. }
  36. task casServer (type: org.gradle.api.plugins.jetty.JettyRunWar, dependsOn: 'casServerOverlay') {
  37. contextPath = "/cas"
  38. connectors = [casServer.class.classLoader.loadClass('org.mortbay.jetty.security.SslSocketConnector').newInstance()]
  39. connectors[0].port = 9443
  40. connectors[0].keystore = connectors[0].truststore = keystore
  41. connectors[0].keyPassword = connectors[0].trustPassword = password
  42. connectors[0].wantClientAuth = true
  43. connectors[0].needClientAuth = false
  44. webApp = casServerOverlay.customWar
  45. inputs.file casServerOverlay.customWar
  46. doFirst() {
  47. System.setProperty('javax.net.ssl.trustStore', keystore)
  48. System.setProperty('javax.net.ssl.trustStorePassword', password)
  49. System.setProperty('java.naming.factory.url.pkgs','org.mortbay.naming')
  50. System.setProperty('java.naming.factory.initial','org.mortbay.naming.InitialContextFactory')
  51. }
  52. }