1 Star 0 Fork 70

zhangsongfu/CAS

forked from Gitee 极速下载/CAS 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
build.gradle 21.37 KB
一键复制 编辑 原始数据 按行查看 历史
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602
import java.util.concurrent.ConcurrentHashMap
description = "Apereo Central Authentication Service $version"
defaultTasks "clean", "build"
buildscript {
repositories {
mavenCentral()
gradlePluginPortal()
maven {
url "https://repo.spring.io/milestone"
mavenContent { releasesOnly() }
}
maven {
url "https://repo.spring.io/snapshot"
mavenContent { snapshotsOnly() }
}
}
dependencies {
// classpath "gradle.plugin.com.ewerk.gradle.plugins:jaxb2-plugin:1.0.10"
classpath "org.gradle:test-retry-gradle-plugin:$gradleRetryVersion"
classpath "org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion"
classpath "com.gorylenko.gradle-git-properties:gradle-git-properties:$gradleGitVersion"
classpath "io.franzbecker:gradle-lombok:$gradleLombokVersion"
classpath "com.github.ben-manes:gradle-versions-plugin:$gradleDependencyVersionsVersion"
classpath "net.ltgt.gradle:gradle-errorprone-plugin:$gradleErrorProneVersion"
classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:$gradleSonarqubeVersion"
classpath "com.github.johnrengelman:shadow:$gradleShadowVersion"
classpath "io.github.gradle-nexus:publish-plugin:$gradleNexusPublishingVersion"
}
}
ext {
srcTagMap = new ConcurrentHashMap<File, Set<String>>()
repositoryUsername = providers.systemProperty("repositoryUsername").getOrNull()
repositoryPassword = providers.systemProperty("repositoryPassword").getOrNull()
publishSnapshots = providers.systemProperty("publishSnapshots").present
publishReleases = providers.systemProperty("publishReleases").present
publishFlag = publishSnapshots || publishReleases
publishMinimalArtifacts = providers.systemProperty("publishMinimalArtifacts").present
skipBootifulArtifact = providers.systemProperty("skipBootifulArtifact").present
skipErrorProneCompiler = providers.systemProperty("skipErrorProneCompiler").present
skipArtifactSigning = providers.systemProperty("skipArtifactSigning").present
enableRemoteDebugging = providers.systemProperty("enableRemoteDebugging").present
remoteDebuggingSuspend = providers.systemProperty("remoteDebuggingSuspend").getOrElse("false") == "true" ? "y" : "n"
generateGitProperties = publishFlag || providers.systemProperty("generateGitProperties").present
generateTimestamps = publishFlag || providers.systemProperty("generateTimestamps").present
ci = System.getenv("CI") || providers.systemProperty("CI").present
excludedFilesFromTestCoverage = [
'**/docs/**',
'**/soap/generated/**',
'**/com/duosecurity/**',
'**/net/jradius/**',
'**/com/yubico/**',
'**/saml/sts/SamlToken**',
'**/**ConfigurationMetadata**',
'**/**NimbusOAuthJacksonModule**',
'**/**Application**',
'**/**Application$**',
'**/**Exception$**',
'**/**Properties**',
'**/**Properties$**'
]
}
def isArtifactSigningRequired = {
publishReleases && !skipArtifactSigning
}
if ("${releaseRepositoryUrl}".contains("oss.sonatype.org")) {
apply plugin: "io.github.gradle-nexus.publish-plugin"
nexusPublishing {
packageGroup = "org.apereo"
repositories {
sonatype {
stagingProfileId = "11d1ddbbdeae9d"
username = "${repositoryUsername}"
password = "${repositoryPassword}"
}
}
clientTimeout = java.time.Duration.ofSeconds(120)
connectTimeout = java.time.Duration.ofSeconds(120)
transitionCheckOptions {
maxRetries.set(60)
delayBetween.set(java.time.Duration.ofSeconds(30))
}
}
}
apply from: rootProject.file("gradle/dependencies.gradle")
apply from: rootProject.file("gradle/dependencyUpdates.gradle")
if (!providers.systemProperty("skipSonarqube").present) {
apply plugin: "org.sonarqube"
sonarqube {
def exclusions = rootProject.excludedFilesFromTestCoverage.join(",")
def token = providers.systemProperty("SONARCLOUD_TOKEN")
.getOrElse(System.getenv("SONARCLOUD_TOKEN"))
properties {
property "sonar.host.url", "https://sonarcloud.io"
property "sonar.projectName", "cas"
property "sonar.sourceEncoding", "UTF-8"
property "sonar.java.source", project.targetCompatibility
property "sonar.organization", "apereo"
property "sonar.login", token
property "sonar.coverage.exclusions", exclusions
property "sonar.java.coveragePlugin", "jacoco"
}
}
}
allprojects {
apply plugin: "idea"
apply plugin: "eclipse"
apply plugin: "java-library"
apply plugin: "jacoco"
jacoco {
toolVersion = "$gradleJacocoVersion"
}
if (gradle.startParameter.taskNames.any { task -> task.contains("publishToMavenLocal") }) {
apply plugin: "maven-publish"
}
def skipRetry = providers.systemProperty('skipTestRetry').present
if (!skipRetry) {
apply plugin: "org.gradle.test-retry"
}
apply from: rootProject.file("gradle/tasks.gradle")
def arch = System.getProperty("os.arch")
if (arch == "aarch64") {
System.setProperty("os.arch", "x86_64")
arch = System.getProperty("os.arch")
def name = System.getProperty("os.name")
logger.info("The OS platform architecture for this Gradle build is reset to ${arch} for ${name}")
}
if (rootProject.generateGitProperties) {
apply plugin: "com.gorylenko.gradle-git-properties"
}
project.ext["forceBootifulArtifact"] = null
afterEvaluate { project ->
if (rootProject.generateGitProperties) {
gitProperties {
customProperty 'project.group', project.group
customProperty 'project.name', project.name
customProperty 'project.version', project.version
customProperty 'project.description', project.description
extProperty = "gitProps"
keys = ["git.branch", "git.build.time", "git.build.user.name",
"git.build.version", "git.commit.id", "git.remote.origin.url"]
}
}
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(project.targetCompatibility)
}
}
idea {
module {
downloadSources = false
downloadJavadoc = false
jdkName = project.targetCompatibility
excludeDirs += file(".gradle")
[".settings", "classes", "bin", "out", "docs", "dependency-cache", "libs",
"reports", "resources", "test-results", "tmp"].each {
excludeDirs += file("$buildDir/$it")
}
}
}
tasks.named('javadoc') {
options.addBooleanOption('html5', true)
options.addStringOption('Xdoclint:html,reference,syntax', '-quiet')
failOnError = providers.systemProperty("ignoreJavadocFailures").present
excludes = ['**/generated/**', '**/com/duosecurity/**']
}
}
subprojects {
if (projectShouldBePublished(project)) {
apply plugin: "maven-publish"
apply plugin: "signing"
}
if (!rootProject.skipErrorProneCompiler) {
apply plugin: "net.ltgt.errorprone"
}
apply from: rootProject.file("gradle/tests.gradle")
ext.libraries = rootProject.ext.libraries
configurations {
tests
provided
}
apply from: rootProject.file("gradle/overrides.gradle")
/**
* Apply publishing rules after the build has had a chance to
* evaluate sub-projects to apply plugins, etc.
*/
afterEvaluate { project ->
if (projectShouldBePublished(project)) {
logger.info "Project ${project.name} should be published"
apply from: rootProject.file("gradle/maven.gradle")
publishing {
publications {
def isWarPluginApplied = project.plugins.hasPlugin("war")
if (isWarPluginApplied) {
logger.info "Project ${project.name} should be published as a WAR"
mavenWeb(MavenPublication) {
from components.web
pom {
createPom(it, project)
}
pom.withXml {
createPomRepositories(asNode())
}
}
} else if (project.hasProperty("skipPublication") && project.skipPublication) {
logger.info "Skipping artifact publication for project ${project.name}"
} else {
logger.info "Project ${project.name} should be published as a JAR"
mavenJava(MavenPublication) {
from components.java
if (project.hasProperty("publishMinimalArtifacts") && project.publishMinimalArtifacts) {
logger.info "Publishing minimal artifacts for project ${project.name}"
} else {
artifact tasks['sourcesJar']
artifact tasks['resourcesJar']
artifact tasks['javadocJar']
artifact tasks['testJar']
}
pom {
createPom(it, project)
}
pom.withXml {
createPomRepositories(asNode())
}
}
}
}
if (!"${releaseRepositoryUrl}".contains("oss.sonatype.org")) {
repositories {
if (rootProject.publishReleases) {
maven {
name "CAS-Releases"
url "${releaseRepositoryUrl}"
mavenContent {
releasesOnly()
}
credentials {
username "${repositoryUsername}"
password "${repositoryPassword}"
}
}
}
if (rootProject.publishSnapshots) {
maven {
name "CAS-Snapshots"
url "${snapshotsRepositoryUrl}"
mavenContent {
snapshotsOnly()
}
credentials {
username "${repositoryUsername}"
password "${repositoryPassword}"
}
}
}
}
}
}
signing {
required = isArtifactSigningRequired
sign publishing.publications
}
}
}
artifacts {
tests testJar
if (rootProject.publishFlag && !rootProject.publishMinimalArtifacts) {
archives sourcesJar
archives javadocJar
archives resourcesJar
}
archives testJar
}
sourceSets {
main {
compileClasspath += configurations.provided
runtimeClasspath += configurations.provided
java {
srcDirs = ["${projectDir}/src/main/java"]
}
resources {
srcDirs = ["${projectDir}/src/main/resources"]
}
}
test {
java {
srcDirs = ["${projectDir}/src/test/java"]
}
resources {
srcDirs = ["${projectDir}/src/test/resources"]
}
}
}
ext.buildJarFile = new File(project.buildDir, "libs/${project.name}-${project.version}.jar")
[compileTestJava, compileJava].each {
it.inputs.property("github.repository") {
System.getenv("GITHUB_REPOSITORY") ?: "apereo/cas"
}
if (rootProject.generateGitProperties) {
it.dependsOn("generateGitProperties")
}
it.options.fork = true
it.options.incremental = true
def casCompilerArgs = ["-parameters"]
def terminateCompilerOnWarning = project.ext.properties.get("terminateCompilerOnWarning", true)
if (terminateCompilerOnWarning) {
casCompilerArgs.add("-Werror")
}
if (!rootProject.skipErrorProneCompiler) {
it.options.errorprone.allErrorsAsWarnings = false
it.options.errorprone.disableWarningsInGeneratedCode = true
it.options.errorprone.excludedPaths = ".*com/duosecurity.*"
it.options.errorprone.errorproneArgs = ['-Xep:StatementSwitchToExpressionSwitch:OFF']
casCompilerArgs.add("-XDcompilePolicy=byfile")
}
it.options.compilerArgs += casCompilerArgs
}
if (projectRequiresLombok(project)) {
apply plugin: "io.franzbecker.gradle-lombok"
lombok {
version = "$lombokVersion"
sha256 = ""
}
installLombok.enabled = false
}
tasks.named('jar') {
def projectName = project.name
def projectGroup = project.group
def projectVersion = project.version
def projectSpecVersion = project.ext.has("gitProps") ? project.ext.gitProps['git.commit.id'] : 'N/A'
manifest {
attributes(
"Automatic-Module-Name": project.name.replace("-", "."),
"Implementation-Title": projectName,
"Implementation-Vendor": projectGroup,
"Created-By": projectGroup)
if (generateTimestamps) {
attributes("Implementation-Date": java.time.ZonedDateTime.now(ZoneId.systemDefault()))
}
attributes(
"Specification-Version": projectSpecVersion,
"Implementation-Version": projectVersion)
}
}
if (!providers.systemProperty("skipCheckstyle").present && projectShouldBePublished(project)) {
apply plugin: "checkstyle"
checkstyle {
configProperties = [
"checkstyle.suppressions.file" : new File(rootDir, "style/checkstyle-suppressions.xml"),
"checkstyle.importcontrol.file": new File(rootDir, "style/import-control.xml")
]
configFile = new File(rootDir, "style/checkstyle-rules.xml")
ignoreFailures false
showViolations true
toolVersion "${checkstyleVersion}"
}
}
dependencies {
implementation libraries.aspectj
api libraries.swaggerannotations
api libraries.slf4j
api libraries.guava
api libraries.commons
api libraries.inspektr
api libraries.persondirectory
api libraries.spring
api libraries.jackson
api libraries.httpclient
api libraries.quartz
api libraries.groovy
api libraries.caffein
api libraries.springcloud
api libraries.springboot
api libraries.springsecurity
api libraries.springintegration
api libraries.springwebflow
api libraries.jakarta
annotationProcessor libraries.springindexer
if (!providers.systemProperty("skipErrorProneCompiler").present) {
errorprone "com.google.errorprone:error_prone_core:$errorProneVersion"
}
testImplementation libraries.tests
testImplementation libraries.log4j
testImplementation libraries.hibernatevalidator
if (!ci) {
testRuntimeOnly "org.junit.platform:junit-platform-suite-engine:$junitPlatformVersion"
}
runtimeOnly libraries.httpclient4
}
}
if (!gradle.startParameter.excludedTaskNames.contains("javadoc") || rootProject.publishFlag) {
tasks.withType(Javadoc).configureEach {
source subprojects.collect { project -> project.sourceSets.main.allJava }
destinationDir = new File(buildDir, "javadoc")
classpath = files(subprojects.collect { project -> project.sourceSets.main.compileClasspath })
options.addBooleanOption('html5', true)
failOnError = providers.systemProperty("ignoreJavadocFailures").present
}
tasks.register('aggregateJavadocsIntoJar', Jar) {
dependsOn javadoc
description = "Aggregate all Javadocs into a single directory"
archiveClassifier.set("javadoc")
from javadoc
}
}
if (rootProject.publishFlag) {
tasks.register('rootSourcesJar', Jar) {
description = "Build JAR for the root CAS module"
archiveBaseName.set("${project.archivesBaseName}")
from rootProject.file("src")
}
}
tasks.register('gradleHome') {
description = "Display GRADLE_HOME environment variable"
doFirst {
ansi.green "\nexport GRADLE_HOME=" + gradle.gradleHomeDir
}
}
if (rootProject.publishFlag && !rootProject.publishMinimalArtifacts) {
artifacts {
archives tasks.named('aggregateJavadocsIntoJar')
archives tasks.named('rootSourcesJar')
}
}
if (gradle.startParameter.taskNames.any { task -> task.startsWith("jacoco") }) {
tasks.register('jacocoRootReport', JacocoReport) {
def executions = subprojects.findAll { subproject ->
if (!subproject.path.contains(":docs")) {
subproject.tasks.withType(Test).each{ task ->
dependsOn(task)
mustRunAfter(task)
}
}
def execFile = subproject.layout.buildDirectory.file('jacoco/jacocoTest.exec').get().asFile
logger.info "${subproject.name} with execution file ${execFile}"
true
}.collect {subproject ->
subproject.layout.buildDirectory.file('jacoco/jacocoTest.exec').get().asFile
}
logger.info "Coverage execution data files: ${executions}"
executionData.from(executions)
reports {
html.required.set(true)
xml.required.set(true)
csv.required.set(true)
}
additionalSourceDirs.setFrom(files(subprojects.sourceSets.main.allSource.srcDirs))
sourceDirectories.setFrom(files(subprojects.sourceSets.main.allSource.srcDirs))
classDirectories.setFrom(
files(subprojects.sourceSets.main.output).collect {
fileTree(dir: it,
include: ['**/*.*'],
exclude: rootProject.excludedFilesFromTestCoverage
)
})
}
}
tasks.register('casVersion') {
description = "Display current CAS version"
def casVersion = rootProject.version
doLast {
println casVersion
}
}
tasks.register('tomcatVersion') {
description = "Display current Apache Tomcat version"
doLast {
println "${tomcatVersion}"
}
}
tasks.register('signingKey') {
description = "Display CAS signing key id"
doLast {
println "Signing key: " + project.findProperty("signing.keyId")
}
}
tasks.register('verifyRequiredJavaVersion') {
def requiredVersion = JavaVersion.toVersion(project.targetCompatibility)
if (!JavaVersion.current().isCompatibleWith(requiredVersion)) {
throw new GradleException("Current Java version ${JavaVersion.current()} does not match required Java version ${requiredVersion}")
}
}
tasks.register('publishProjectModules') {
def outputFile = new File("${buildDir}", "modules.json")
def results = []
subprojects.each {
def publishMetadata = it.hasProperty("publishMetadata") ? it.property("publishMetadata") : false
if (publishMetadata) {
def metadata = it.ext.projectMetadata
if (!metadata.containsKey("title") || !metadata.containsKey("category")) {
throw new GradleException("Missing required project metadata for ${it.name}")
}
if (!metadata.containsKey("selectable")) {
metadata.put("selectable", true)
}
results += [
name: it.name,
version: it.version,
group: it.group,
description: it.description,
details: metadata
]
}
}
doLast {
outputFile.getParentFile().mkdirs()
def json = groovy.json.JsonOutput.toJson(results)
outputFile.write json
println "Published project modules to ${outputFile}"
}
}
boolean projectShouldBePublished(Project project) {
def publishable = !["api", "core", "docs", "support", "webapp"].contains(project.name)
&& !project.getPath().contains("cas-server-documentation")
if ("${releaseRepositoryUrl}".contains("github.com") && project.getPath().contains("cas-server-support-shell")) {
// shell is too big for github
publishable = false
}
project.ext.publishable = publishable
}
boolean projectRequiresLombok(Project project) {
return !["api", "core", "docs", "support", "webapp"].contains(project.name)
&& !project.getPath().contains("cas-server-documentation")
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/dandingboshi/CAS.git
git@gitee.com:dandingboshi/CAS.git
dandingboshi
CAS
CAS
master

搜索帮助