apply plugin: "java" sourceSets { bootRunSources { resources { srcDirs new File("//etc/cas/templates/"), new File("${project.getProjectDir()}/src/main/resources/") } } } configurations { bootRunConfig { extendsFrom compileClasspath exclude(group: "org.springframework.boot", module: "spring-boot-starter-logging") exclude(group: "ch.qos.logback", module: "logback-core") exclude(group: "ch.qos.logback", module: "logback-classic") } } dependencies { bootRunConfig "org.apereo.cas:cas-server-core" bootRunConfig "org.apereo.cas:cas-server-core-logging" bootRunConfig "org.apereo.cas:cas-server-core-web" bootRunConfig "org.apereo.cas:cas-server-core-webflow" bootRunConfig "org.apereo.cas:cas-server-core-cookie" bootRunConfig "org.apereo.cas:cas-server-core-logout" bootRunConfig "org.apereo.cas:cas-server-core-authentication" bootRunConfig "org.apereo.cas:cas-server-core-validation" bootRunConfig "org.apereo.cas:cas-server-core-audit" bootRunConfig "org.apereo.cas:cas-server-core-tickets" bootRunConfig "org.apereo.cas:cas-server-core-services" bootRunConfig "org.apereo.cas:cas-server-core-util" bootRunConfig "org.apereo.cas:cas-server-support-webconfig" bootRunConfig "org.apereo.cas:cas-server-support-thymeleaf" bootRunConfig "org.apereo.cas:cas-server-support-validation" bootRunConfig "org.apereo.cas:cas-server-support-person-directory" bootRunConfig "org.apereo.cas:cas-server-webapp-resources" bootRunConfig "org.apereo.cas:cas-server-webapp-init" bootRunConfig "org.apereo.cas:cas-server-webapp-tomcat" bootRunConfig "org.apereo.cas:cas-server-webapp-init-tomcat" bootRunConfig "org.springframework.cloud:spring-cloud-starter-bootstrap" bootRunConfig "org.springframework.boot:spring-boot-devtools" } bootRun { classpath = configurations.bootRunConfig + sourceSets.main.compileClasspath + sourceSets.main.runtimeClasspath sourceResources sourceSets.bootRunSources doFirst { systemProperties = System.properties } def list = [] list.add("-XX:TieredStopAtLevel=1") list.add("-Xverify:none") list.add("--add-modules") list.add("java.se") list.add("--add-exports") list.add("java.base/jdk.internal.ref=ALL-UNNAMED") list.add("--add-opens") list.add("java.base/java.lang=ALL-UNNAMED") list.add("--add-opens") list.add("java.base/java.nio=ALL-UNNAMED") list.add("--add-opens") list.add("java.base/sun.nio.ch=ALL-UNNAMED") list.add("--add-opens") list.add("java.management/sun.management=ALL-UNNAMED") list.add("--add-opens") list.add("jdk.management/com.sun.management.internal=ALL-UNNAMED") list.add("-Xrunjdwp:transport=dt_socket,address=5000,server=y,suspend=n") jvmArgs = list def appArgList = [] args = appArgList } springBoot { buildInfo() mainClass = "org.apereo.cas.web.CasWebApplication" } bootWar { def executable = project.hasProperty("executable") && Boolean.valueOf(project.getProperty("executable")) if (executable) { logger.info "Including launch script for executable WAR artifact" launchScript() } else { logger.info "WAR artifact is not marked as an executable" } archiveFileName = "cas.war" archiveBaseName = "cas" entryCompression = ZipEntryCompression.STORED /* attachClasses = true classesClassifier = 'classes' archiveClasses = true */ overlays { /* https://docs.freefair.io/gradle-plugins/current/reference/#_io_freefair_war_overlay Note: The "excludes" property is only for files in the war dependency. If a jar is excluded from the war, it could be brought back into the final war as a dependency of non-war dependencies. Those should be excluded via normal gradle dependency exclusions. */ cas { from "org.apereo.cas:cas-server-webapp${project.appServer}:${project.'cas.version'}@war" provided = false excludes = ["WEB-INF/lib/servlet-api-2*.jar"] /* excludes = ["WEB-INF/lib/somejar-1.0*"] enableCompilation = true includes = ["*.xyz"] targetPath = "sub-path/bar" skip = false */ } } } bootBuildInfo.mustRunAfter(compileJava)