CAS 5.3.x SSO单点登录项目源码Gradle导入IDEA

apereo的CAS SSO项目cas-server包含几百个module,如果设置不当则极有可能build失败。
官方5.x版本Build向导:https://apereo.github.io/cas/developer/Build-Process-5X.html
需要注意的是,5.x版本均使用gradle进行构建。

1.准备环境

JDK 1.8 (CAS 6.x 需要JDK11)

Gradle 4.10.1(项目配置中为4.8)

IDEA 2018.1

2.源码下载

打开项目github地址:https://github.com/apereo/cas/tree/5.3.x

切换分支Branch至5.3.x,直接Dowdload Zip,然后将下载的zip项目解压

当然也可以使用git进行clone

3.环境配置

3.1 IDEA配置

打开IDEA安装目录,修改对应配置文件 idea64.exe.vmoptions(32位则idea.exe.vmoptions)

1
2
3
4
5
6
7
8
9
10
11
-Xms1024m
-Xmx8192m
-XX:ReservedCodeCacheSize=512m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-javaagent:E:\Program Files\JetBrains\IntelliJ IDEA 2018.1.3\JetbrainsCrack-3.1-release-enc.jar

以上是自己在build时使用的IDEA配置,当然也可参考官方给的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-server
-Xms2g
-Xmx8g
-XX:NewRatio=3
-Xss16m
-XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled
-XX:ConcGCThreads=4
-XX:ReservedCodeCacheSize=840m
-XX:+AlwaysPreTouch
-XX:+TieredCompilation
-XX:+UseCompressedOops
-XX:SoftRefLRUPolicyMSPerMB=50
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-ea
-XX:MaxPermSize=512m
-XX:PermSize=512m
-Xverify:none

配置主要是加大堆内存大小、缓存空间大小及非堆区内存大小。如果不做以上配置,会导致内存直接内存溢出卡死,无法正常build。另外如果自身机器内存不是很大,**-Xmx4096m** 也是够用的。

3.2 Gradle配置

加大Gradle堆内存大小,开启多线程并行。

3.3 Complier设置

按照官方指引进行以下配置:

配置加大了build进程的堆大小,并行编译独立的module。

3.4 Gradle配置文件

打开项目根目录下的build.gradle文件,找到以下代码部分

1
2
3
4
git = org.ajoberstar.grgit.Grgit.open(dir: file('.').canonicalPath)
def gitHead = git.head()
currentRevision = gitHead.id
currentAbbreviatedRevision = gitHead.abbreviatedId

这里是从git目录获取当前版本号,但是由于各种原因这里经常拿不到而不能继续Build。

这里直接将其注释,指定版本号:

1
2
3
4
5
6
//    git = org.ajoberstar.grgit.Grgit.open(dir: file('.').canonicalPath)
// def gitHead = git.head()
// currentRevision = gitHead.id
// currentAbbreviatedRevision = gitHead.abbreviatedId

currentRevision = "cas-5.3.3"

如果没有梯子,在build.gradle中配置aliyun仓库

1
maven { url "http://maven.aliyun.com/nexus/content/groups/public/"}

3.5 Lombok插件安装

CAS项目使用了大量Lombok注解,相信大多数开发者都使用了Lombok,这里不进行过多描述。

4.项目导入

导入项目,然后进入漫长的等待吧… 自己build了大概二三十分钟