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

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

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

相关推荐
alice--小文子1 天前
cursor-mcp工具使用
java·服务器·前端
进阶小白猿1 天前
Java技术八股学习Day33
java·开发语言·学习
程序员敲代码吗1 天前
如何通过命令行启动COMSOL的参数化、批处理和集群扫描
java·c#·bash
MX_93591 天前
Spring的bean工厂后处理器和Bean后处理器
java·后端·spring
市场部需要一个软件开发岗位1 天前
JAVA开发常见安全问题:纵向越权
java·数据库·安全
历程里程碑1 天前
普通数组----合并区间
java·数据结构·python·算法·leetcode·职场和发展·tornado
程序员泠零澪回家种桔子1 天前
Spring AI框架全方位详解
java·人工智能·后端·spring·ai·架构
CodeCaptain1 天前
nacos-2.3.2-OEM与nacos3.1.x的差异分析
java·经验分享·nacos·springcloud
Anastasiozzzz1 天前
Java Lambda 揭秘:从匿名内部类到底层原理的深度解析
java·开发语言
骇客野人1 天前
通过脚本推送Docker镜像
java·docker·容器