CAS部署cas-management-overlay运行Gradle构建报错咨询
问题根因
核心报错java.lang.NoSuchMethodError: 'void org.apache.logging.slf4j.Log4jLoggerFactory.<init>(org.apache.logging.slf4j.Log4jMarkerFactory)'是典型的日志依赖版本冲突:类路径下的log4j-slf4j桥接包和SLF4J API版本不匹配,类初始化时找不到对应构造方法。
你贴的build.gradle本身存在严重配置错误——大量官方默认配置被错误添加了注释,repositories块未闭合、依赖管理规则全被注释,Gradle无法按照CAS官方BOM约束统一拉取对应版本的依赖,才会拉取到版本不兼容的日志包。另外必须注意:cas-management-overlay的版本要和你已经跑通的cas-overlay-template版本完全一致,跨版本必然出现依赖冲突。
修复步骤
- 先删除
build.gradle里乱加的注释,恢复官方overlay模板的基础结构,不要随意注释依赖管理相关配置。可用的基础配置参考如下:
import org.apache.tools.ant.taskdefs.condition.* import org.gradle.internal.logging.text.* import org.apereo.cas.metadata.* import java.nio.file.* import static org.gradle.internal.logging.text.StyledTextOutput.Style buildscript { repositories { if (project.privateRepoUrl) { maven { url project.privateRepoUrl credentials { username = project.privateRepoUsername password = System.env.PRIVATE_REPO_TOKEN } } } mavenLocal() mavenCentral() gradlePluginPortal() } dependencies { classpath "org.springframework.boot:spring-boot-gradle-plugin:${project.springBootVersion}" } } apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' apply plugin: 'java' apply plugin: 'war' dependencies { // 下面两行是依赖版本管控核心,绝对不能注释 implementation enforcedPlatform("org.apereo.cas:cas-server-support-bom:${project.'cas.version'}") implementation platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES) // 核心依赖,不要遗漏cas-management-webapp implementation "org.apereo.cas:cas-server-core-api-configuration-model" implementation "org.apereo.cas:cas-server-webapp-init" implementation "org.apereo.cas:cas-management-webapp" if (project.hasProperty("casModules")) { def moduleList = project.getProperty("casModules").split(",") moduleList.each { mod -> def matchedProjects = rootProject.subprojects.findAll { proj -> proj.name == "cas-server-core-${mod}" || proj.name == "cas-server-support-${mod}" } matchedProjects.each {implementation it} } } developmentOnly "org.springframework.boot:spring-boot-devtools:${project.springBootVersion}" }
- 清理旧构建缓存和残留的Gradle守护进程,执行以下命令重置构建环境:
./gradlew --stop ./gradlew clean rm -rf ~/.gradle/caches/transforms-* ./gradlew bootRun
- 如果完成上面两步后仍然报日志相关错误,直接在
build.gradle中添加全局依赖冲突解决规则,强制统一日志版本,排除冗余的日志实现包:
configurations.all { resolutionStrategy { force "org.apache.logging.log4j:log4j-slf4j2-impl:2.20.0" force "org.slf4j:slf4j-api:2.0.9" exclude group: 'org.slf4j', module: 'slf4j-log4j12' exclude group: 'ch.qos.logback', module: 'logback-classic' } }
- 最后检查
gradle.properties里的版本配置,确保cas.version和你已经部署成功的CAS服务端版本完全一致,参考配置:
cas.version=6.6.15 springBootVersion=2.7.18
内容的提问来源于stack exchange,提问作者user19398258
相关产品推荐
相关产品推荐

