From 455e2bab90d811c247161de5c81a8b08b75ba1b0 Mon Sep 17 00:00:00 2001 From: Rob Winch Date: Mon, 18 Sep 2017 10:19:59 -0500 Subject: [PATCH] Update to Gradle 4.1 --- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.jar | Bin 54212 -> 54783 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- ...ring-security-samples-xml-cassample.gradle | 114 +++++------------- ...ring-security-samples-xml-casserver.gradle | 86 ++++++------- .../spring-security-samples-xml-cas.gradle | 25 ++++ 6 files changed, 97 insertions(+), 134 deletions(-) create mode 100644 samples/xml/cas/spring-security-samples-xml-cas.gradle diff --git a/build.gradle b/build.gradle index 763bca926b..b2b5ff69b4 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ buildscript { dependencies { - classpath 'io.spring.gradle:spring-build-conventions:0.0.2.RELEASE' + classpath 'io.spring.gradle:spring-build-conventions:0.0.4.BUILD-SNAPSHOT' classpath "org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion" } repositories { diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 2cee530adb2f5879be3f566191974c0320d12ddb..260d5bb9500393b46d2cdce04ab839738ef31d3d 100644 GIT binary patch delta 6730 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 j@cI4Zzu - runtime.exclude module: name - } - - runtime.exclude group: 'org.aspectj' -} sourceSets { test.resources.exclude 'GebConfig.groovy' integrationTest.groovy.srcDir file('src/integration-test/groovy') } -eclipse.classpath.plusConfigurations += [configurations.integrationTestRuntime] - dependencies { compile project(':spring-security-cas') compile project(':spring-security-core') @@ -46,81 +33,40 @@ dependencies { integrationTestCompile 'org.slf4j:jcl-over-slf4j' } -[project.tasks.jettyRun, project.tasks.jettyRunWar]*.configure { - contextPath = '/cas-sample' - def httpConnector = jettyRunWar.class.classLoader.loadClass('org.mortbay.jetty.nio.SelectChannelConnector').newInstance() - httpConnector.port = 8080 - httpConnector.confidentialPort = 8443 - def httpsConnector = jettyRunWar.class.classLoader.loadClass('org.mortbay.jetty.security.SslSocketConnector').newInstance() - httpsConnector.port = 8443 - httpsConnector.keystore = httpsConnector.truststore = keystore - httpsConnector.keyPassword = httpsConnector.trustPassword = password +integrationTest { + dependsOn { casServer().tasks.appBeforeIntegrationTest } + doFirst { + def casServiceHost = 'localhost:' + gretty.httpsPort + def casServerHost = 'localhost:' + casServer().gretty.httpsPort + systemProperties['cas.server.host'] = casServerHost + systemProperties['cas.service.host'] = casServiceHost + systemProperties['geb.build.baseUrl'] = 'https://'+casServiceHost+'/cas-sample/' + systemProperties['geb.build.reportsDir'] = 'build/geb-reports' + systemProperties['jar.path'] = jar.archivePath + systemProperties['javax.net.ssl.trustStore'] = keystore + systemProperties['javax.net.ssl.trustStorePassword'] = password + } + finalizedBy { casServer().tasks.appAfterIntegrationTest } +} - connectors = [httpConnector, httpsConnector] - doFirst() { - System.setProperty('cas.server.host', casServer().httpsHost) - System.setProperty('cas.service.host', jettyRunWar.httpsHost) +prepareAppServerForIntegrationTests { + dependsOn { casServer().tasks.appBeforeIntegrationTest } + doLast { + def casServiceHost = 'localhost:' + project.gretty.httpsPort + def casServerHost = 'localhost:' + casServer().gretty.httpsPort + gretty.jvmArgs += ["-Dcas.server.host=${casServerHost}", "-Dcas.service.host=${casServiceHost}"] } } -task cas (dependsOn: [jettyRunWar]) { - jettyRunWar.dependsOn(':spring-security-samples-xml-casserver:casServer') -} - -task casServer(dependsOn: ':spring-security-samples-xml-casserver:casServer') { -} - - -integrationTest.dependsOn cas -integrationTest.doFirst { - def casServiceHost = jettyRunWar.httpsHost - systemProperties['cas.server.host'] = casServer().httpsHost - systemProperties['cas.service.host'] = casServiceHost - systemProperties['geb.build.baseUrl'] = 'https://'+casServiceHost+'/cas-sample/' - systemProperties['geb.build.reportsDir'] = 'build/geb-reports' - systemProperties['jar.path'] = jar.archivePath - systemProperties['javax.net.ssl.trustStore'] = keystore - systemProperties['javax.net.ssl.trustStorePassword'] = password -} - -gradle.taskGraph.whenReady {graph -> - def casServer = casServer() - [casServer,jettyRunWar]*.metaClass*.getHttpsConnector {-> - def sslSocketConnClass = jettyRunWar.class.classLoader.loadClass('org.mortbay.jetty.security.SslSocketConnector') - delegate.connectors.find { it in sslSocketConnClass } - } - [casServer,jettyRunWar]*.metaClass*.getHttpsHost {-> - "localhost:"+delegate.httpsConnector.port - } - jettyRunWar.metaClass.getHttpConnector {-> - def channelConnClass = jettyRunWar.class.classLoader.loadClass('org.mortbay.jetty.nio.SelectChannelConnector') - delegate.connectors.find { it in channelConnClass } - } - if (graph.hasTask(cas)) { - casServer.daemon = true - } - if(graph.hasTask(integrationTest)) { - tasks.getByPath(':spring-security-samples-xml-casserver:casServerOverlay').logLevel = 'ERROR' - jettyRunWar { - additionalRuntimeJars += file('src/integration-test/resources') - daemon = true - } - - [jettyRunWar.httpConnector,jettyRunWar.httpsConnector,casServer.httpsConnector]*.metaClass*.reservePort { taskToCloseSocket -> - def serverSocket = new ServerSocket(0) - delegate.metaClass.serverSocket = serverSocket - delegate.port = serverSocket.localPort - taskToCloseSocket.doFirst { - serverSocket.close() - } - } - - [jettyRunWar.httpConnector,jettyRunWar.httpsConnector]*.reservePort(jettyRunWar) - jettyRunWar.httpConnector.confidentialPort = jettyRunWar.httpsConnector.port - casServer.httpsConnector.reservePort(casServer) - } +gretty { + contextPath = '/cas-sample/' + httpsEnabled = true + httpsPort = 8443 + sslKeyStorePath = keystore + sslKeyStorePassword = password + jvmArgs = ["-Djavax.net.ssl.trustStore=${keystore}", "-Djavax.net.ssl.trustStorePassword=${password}"] } def casServer() { - tasks.getByPath(':spring-security-samples-xml-casserver:casServer') + project(':spring-security-samples-xml-casserver') } diff --git a/samples/xml/cas/casserver/spring-security-samples-xml-casserver.gradle b/samples/xml/cas/casserver/spring-security-samples-xml-casserver.gradle index 65aa0064d6..727e684daf 100644 --- a/samples/xml/cas/casserver/spring-security-samples-xml-casserver.gradle +++ b/samples/xml/cas/casserver/spring-security-samples-xml-casserver.gradle @@ -1,63 +1,55 @@ import org.apache.tools.ant.filters.ReplaceTokens -apply plugin: 'io.spring.convention.spring-sample' +apply plugin: 'io.spring.convention.spring-sample-war' def keystore = "$rootDir/samples/certificates/server.jks" def password = 'password' -configurations { - casServer -} dependencies { - casServer "org.jasig.cas:cas-server-webapp:4.0.0@war" + compile "org.jasig.cas:cas-server-webapp:4.0.0@war" + compile slf4jDependencies } -task casServerOverlay(type: Sync) { - def war = configurations.casServer.resolve().toArray()[0] - def warName = war.name.replace('.war','-custom') - def overlayDir = file('src/main/webapp') - def explodedWar = file("$buildDir/tmp/${warName}") - ext.customWar = file("$buildDir/tmp/${warName}.war") - ext.tokens = [logLevel: 'INFO'] +project.tasks.withType(org.gradle.api.tasks.bundling.War) { war -> + war.duplicatesStrategy = DuplicatesStrategy.EXCLUDE + project.tasks.war.doFirst { + war.classpath = war.classpath.filter { !it.name.endsWith(".war") } - inputs.files(war, overlayDir) - inputs.property('tokens',{tokens}) - outputs.files (customWar,explodedWar,file("$buildDir/tmp/expandedArchives")) - - from zipTree(war) - from (overlayDir) { - filter(ReplaceTokens,tokens: tokens) - } - into explodedWar - - doLast { - if(customWar.exists()) { - customWar.delete() + war.project.configurations.runtime.each { + if (it.name.endsWith(".war")) { + def fileList = war.project.zipTree(it) + war.from fileList + } } - ant.zip(destfile: customWar, baseDir: explodedWar) } } -casServerOverlay.metaClass.setLogLevel { level -> - tokens['logLevel'] = level -} - -task casServer (type: org.gradle.api.plugins.jetty.JettyRunWar, dependsOn: 'casServerOverlay') { - contextPath = "/cas" - connectors = [casServer.class.classLoader.loadClass('org.mortbay.jetty.security.SslSocketConnector').newInstance()] - connectors[0].port = 9443 - connectors[0].keystore = connectors[0].truststore = keystore - connectors[0].keyPassword = connectors[0].trustPassword = password - connectors[0].wantClientAuth = true - connectors[0].needClientAuth = false - webApp = casServerOverlay.customWar - - inputs.file casServerOverlay.customWar - - doFirst() { - System.setProperty('javax.net.ssl.trustStore', keystore) - System.setProperty('javax.net.ssl.trustStorePassword', password) - System.setProperty('java.naming.factory.url.pkgs','org.mortbay.naming') - System.setProperty('java.naming.factory.initial','org.mortbay.naming.InitialContextFactory') +project.tasks.withType(org.akhikhl.gretty.StartBaseTask).all { task -> + task.doFirst { + def destinationDir = project.file("$buildDir/inplaceWebapp") + project.configurations.runtime.each { dependency -> + if (dependency.name.endsWith(".war")) { + def warTree = project.zipTree(dependency) + project.copy { + from warTree + into destinationDir + eachFile { + if (it.relativePath.getFile(destinationDir).exists()) { + it.exclude() + } + } + } + } + } } } + +gretty { + contextPath = '/cas' + httpsEnabled = true + httpPort = 9090 + httpsPort = 9443 + sslKeyStorePath = keystore + sslKeyStorePassword = password + jvmArgs = ["-Djavax.net.ssl.trustStore=${keystore}", "-Djavax.net.ssl.trustStorePassword=${password}"] +} diff --git a/samples/xml/cas/spring-security-samples-xml-cas.gradle b/samples/xml/cas/spring-security-samples-xml-cas.gradle new file mode 100644 index 0000000000..a39d857e39 --- /dev/null +++ b/samples/xml/cas/spring-security-samples-xml-cas.gradle @@ -0,0 +1,25 @@ +apply plugin: 'io.spring.convention.spring-sample-war' + +def keystore = "$rootDir/samples/certificates/server.jks" +def password = 'password' + +gretty { + httpsEnabled = true + httpsPort = 8443 + sslKeyStorePath = keystore + sslKeyStorePassword = password + jvmArgs = ["-Djavax.net.ssl.trustStore=${keystore}", + "-Djavax.net.ssl.trustStorePassword=${password}", + "-Dcas.server.host=localhost:$httpsPort", + "-Dcas.service.host=localhost:$httpsPort"] +} + +farm { + webapp ':spring-security-samples-xml-casserver' + webapp ':spring-security-samples-xml-cassample' +} + +task cas(dependsOn: 'farmRunWar') { + group 'Gretty tasks' + description 'Run CAS Server and Sample' +}