ApereoCas学习系列一——从github克隆cas-server源码并启动

很久之前写了一个部署CAS服务的博客,被亚马逊云科技技术品牌专区收录了(详情点击这里),最近有了一些时间,单独开个系列详细研究下cas。第一节就从把源码跑起来开始吧。

环境准备

JDK:21

开发工具:IntelliJ IDEA 2025.2.3 (Ultimate Edition)

Gradle:9.1.0(如果不知道怎么安装可以参考我的另一篇博文:安装Gradle

Cas版本:7.3(即当前最新)

官方参考:https://apereo.github.io/cas/developer/Build-Process.html (一定要看,很有用!)

克隆代码

Github主页:https://github.com/apereo/cas

源码克隆:https://github.com/apereo/cas.git

按照官方参考,检出的项目名称最好写成"cas-server"。

编译工程

1、检出后的项目目录如图:

2、设置IDEA的Gradle插件和项目的SDK:

3、设置完成后,把分支切换到7.3版本。如果使用master分支的话,里面用的一些依赖如SpringBoot相关的,都是预发布版本,远程仓库上甚至没有这些依赖,想要本地调通非常困难。我本地也尝试过跑通master分支,但是当发现业务代码中的依赖也不存在之后,就收手了。

重新打开IDEA打开此项目,然后点开Gradle面板,使用刷新按钮,加载Gradle项目,这一步会下载跟多依赖,会耗点时间。

4、执行Gradle的clean任务:

5、执行Gradle的build任务:

直接执行build任务会报错,内容大致为:

java 复制代码
> Task :core:cas-server-core-configuration:checkstyleMain
[ant:checkstyle] [ERROR] D:\Program Files\myideaworkspace\cas\core\cas-server-core-configuration\src\main\java\org\apereo\cas\config\CasCoreBaseEnvironmentConfiguration.java:30: Configuration classes for tests must be marked with @TestConfiguration [useTestConfiguration]
[ant:checkstyle] [ERROR] D:\Program Files\myideaworkspace\cas\core\cas-server-core-configuration\src\main\java\org\apereo\cas\config\CasCoreBaseEnvironmentConfiguration.java:34: Configuration classes for tests must be marked with @TestConfiguration [useTestConfiguration]
[ant:checkstyle] [ERROR] D:\Program Files\myideaworkspace\cas\core\cas-server-core-configuration\src\main\java\org\apereo\cas\config\CasCoreBaseEnvironmentConfiguration.java:46: Configuration classes for tests must be marked with @TestConfiguration [useTestConfiguration]
[ant:checkstyle] [ERROR] D:\Program Files\myideaworkspace\cas\core\cas-server-core-configuration\src\main\java\org\apereo\cas\config\CasCoreBaseEnvironmentConfiguration.java:64: Configuration classes for tests must be marked with @TestConfiguration [useTestConfiguration]
[ant:checkstyle] [ERROR] D:\Program Files\myideaworkspace\cas\core\cas-server-core-configuration\src\main\java\org\apereo\cas\config\CasCoreBaseStandaloneConfiguration.java:33: Configuration classes for tests must be marked with @TestConfiguration [useTestConfiguration]
[ant:checkstyle] [ERROR] D:\Program Files\myideaworkspace\cas\core\cas-server-core-configuration\src\main\java\org\apereo\cas\config\CasCoreBaseStandaloneConfiguration.java:37: Configuration classes for tests must be marked with @TestConfiguration [useTestConfiguration]
[ant:checkstyle] [ERROR] D:\Program Files\myideaworkspace\cas\core\cas-server-core-configuration\src\main\java\org\apereo\cas\config\CasCoreBaseStandaloneConfiguration.java:71: Configuration classes for tests must be marked with @TestConfiguration [useTestConfiguration]


> Task :core:cas-server-core-scripting:checkstyleMain
[ant:checkstyle] [ERROR] D:\Program Files\myideaworkspace\cas\core\cas-server-core-scripting\src\main\java\org\apereo\cas\config\CasCoreScriptingAutoConfiguration.java:36: Configuration classes for tests must be marked with @TestConfiguration [useTestConfiguration]



FAILURE: Build completed with 2 failures.

1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':core:cas-server-core-configuration:checkstyleMain'.
> A failure occurred while executing org.gradle.api.plugins.quality.internal.CheckstyleAction
   > Checkstyle rule violations were found. See the report at: file:///D:/Program%20Files/myideaworkspace/cas/core/cas-server-core-configuration/build/reports/checkstyle/main.html
     Checkstyle files with violations: 2
     Checkstyle violations by severity: [error:7]

==============================================================================

2: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':core:cas-server-core-scripting:checkstyleMain'.
> A failure occurred while executing org.gradle.api.plugins.quality.internal.CheckstyleAction
   > Checkstyle rule violations were found. See the report at: file:///D:/Program%20Files/myideaworkspace/cas/core/cas-server-core-scripting/build/reports/checkstyle/main.html
     Checkstyle files with violations: 1
     Checkstyle violations by severity: [error:1]

==============================================================================

这个报错大致意思是,某些插件的代码格式检查不通过导致的报错(我个人是这么理解的,欢迎大佬指正)。所以我们需要在build的时候跳过代码的检查。在右侧的Gradle面板里,在build上右键,修改运行配置,在弹窗的命令里追加"-x checkstyleMain -x checkstyleTest -x checkstyleAot":

设置好之后再点击build(在我的老伙计奋斗了1小时8分钟之后,总算是结束了......):

启动方式一

通过webapp下cas-server-webapp-native模块的CasNativeWebApplication类进行启动:

启动的时候可能会有下面的报错,是因为配置文件默认是以https启动的服务,自然也需要加载证书之类的配置。因此我们需要修改配置,把相关内容注释掉:

java 复制代码
2025-11-19 23:59:37,640 ERROR [org.springframework.boot.SpringApplication] - <Application run failed>
org.springframework.context.ApplicationContextException: Unable to start web server
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:170)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:621)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:318)
	at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:149)
	at org.apereo.cas.nativex.CasNativeWebApplication.main(CasNativeWebApplication.java:56)
Caused by: java.lang.IllegalStateException: Unable to create key store: Could not load store from 'file:/etc/cas/thekeystore'
	at org.springframework.boot.ssl.jks.JksSslStoreBundle.createKeyStore(JksSslStoreBundle.java:112)
	at org.springframework.boot.ssl.jks.JksSslStoreBundle.lambda$new$0(JksSslStoreBundle.java:75)
	at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:106)
	at org.springframework.boot.ssl.jks.JksSslStoreBundle.getKeyStore(JksSslStoreBundle.java:81)
	at org.springframework.boot.web.server.WebServerSslBundle.createKeyStore(WebServerSslBundle.java:157)
	at org.springframework.boot.web.server.WebServerSslBundle.createStoreBundle(WebServerSslBundle.java:147)
	at org.springframework.boot.web.server.WebServerSslBundle.get(WebServerSslBundle.java:142)
	at org.springframework.boot.web.server.AbstractConfigurableWebServerFactory.getSslBundle(AbstractConfigurableWebServerFactory.java:198)
	at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.customizeSsl(TomcatServletWebServerFactory.java:384)
	at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.customizeConnector(TomcatServletWebServerFactory.java:360)
	at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:209)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:193)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:167)
	... 7 more
Caused by: java.lang.IllegalStateException: Could not load store from 'file:/etc/cas/thekeystore'
	at org.springframework.boot.ssl.jks.JksSslStoreBundle.loadKeyStore(JksSslStoreBundle.java:140)
	at org.springframework.boot.ssl.jks.JksSslStoreBundle.createKeyStore(JksSslStoreBundle.java:107)
	... 19 more
Caused by: java.io.FileNotFoundException: \etc\cas\thekeystore (系统找不到指定的路径。)
	at java.base/java.io.FileInputStream.open0(Native Method)
	at java.base/java.io.FileInputStream.open(FileInputStream.java:213)
	at java.base/java.io.FileInputStream.<init>(FileInputStream.java:152)
	at java.base/java.io.FileInputStream.<init>(FileInputStream.java:106)
	at java.base/sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:84)
	at java.base/sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:180)
	at org.springframework.core.io.UrlResource.getInputStream(UrlResource.java:250)
	at org.springframework.boot.ssl.jks.JksSslStoreBundle.loadKeyStore(JksSslStoreBundle.java:135)

我们注释掉webapp下cas-server-webapp-resources目录下的application.properties中下面几个属性,在重新启动,终于是启动成功:

输入地址"http://localhost:8443/cas/login",输入用户名密码:casuser/Mellon,即可登录。这个用户密码对也是在该配置文件中配置的,往下翻可以找到。

启动方式二

使用idea里的终端,进入到\cas-server\webapp\cas-server-webapp-tomcat\build\libs目录,然后执行下面的命令。这个可能还是报错"\etc\cas\thekeystore (系统找不到指定的路径。)",这是因为之前打包没事先像方式一一样,把那几个配置注释掉。可以注释那几个属性,重新运行gradle面板的build命令即可。

bash 复制代码
java -jar cas-server-webapp-tomcat-7.3.2-SNAPSHOT.war

接下来会研究使用本地用户数据源进行登陆验证~

最后,希望大家多多支持,多多关注,欢迎留言,随时交流~

相关推荐
像少年啦飞驰点、2 小时前
Spring Boot 从入门到实践:快速构建一个 RESTful API 服务
java·spring boot·后端开发·快速入门·restful api·编程小白
编程彩机2 小时前
互联网大厂Java面试:从Spring Cloud到Kafka的技术场景深度解析
java·spring cloud·微服务·kafka·技术面试
波波0072 小时前
每日一题:.NET 中什么是 LOH(大对象堆)?为什么频繁使用大数组或大字符串可能导致性能问题?如何优化?
java·jvm·算法
Gofarlic_OMS2 小时前
Fluent许可证使用合规性报告自动化生成系统
java·大数据·运维·人工智能·算法·matlab·自动化
熊文豪2 小时前
Tomcat+cpolar 让 Java Web 应用随时随地可访问
java·前端·tomcat·cpolar
南棱笑笑生2 小时前
20260123让天启AIO-3576Q38开发板在天启Buildroot下适配摄像头模块8ms1m【预览】
java·前端·数据库·rockchip
大腿不要的腿毛2 小时前
idea 导入tomcat项目,springMvc项目,static 文件报红,JSP文件include报红
java·tomcat·intellij-idea
星辰_mya2 小时前
超时未支付订单之分库分表+定时任务+RMQ延时消息
java·架构·rocketmq
Sylvia33.2 小时前
如何获取足球数据统计数据API
java·前端·python·websocket·数据挖掘