上次编译cas 5.3.15.1,还是2020年7月,今天重新编译,发现编译不过了。本文记录了遇到的问题,及我使用的解决方法。
JDK: Corretto 1.8.0_372 IDE: IntelliJ IDEA 2023.1.2 (Community Edition) OS: Windows 11
-
propdeps-plugin:
A problem occurred configuring root project 'cas-server'. > Could not resolve all artifacts for configuration ':classpath'. > Could not resolve io.spring.gradle:propdeps-plugin:0.0.10.RELEASE. Required by: project : > Could not resolve io.spring.gradle:propdeps-plugin:0.0.10.RELEASE. > Could not get resource 'https://repo.spring.io/plugins-release/io/spring/gradle/propdeps-plugin/0.0.10.RELEASE/propdeps-plugin-0.0.10.RELEASE.pom'. > Could not HEAD 'https://repo.spring.io/plugins-release/io/spring/gradle/propdeps-plugin/0.0.10.RELEASE/propdeps-plugin-0.0.10.RELEASE.pom'. Received status code 401 from server:
【解决方法】
编辑根目录下的build.gradle,改用阿里云的maven仓库:
maven { url "https://repo.spring.io/plugins-release" }
改为:
// maven { url "https://maven.aliyun.com/repository/public" } maven { url "https://maven.aliyun.com/repository/spring-plugin" }
-
duo-client问题:
> Could not resolve net.unicon.iam:duo-client:0.2.2. Required by: project :support:cas-server-support-duo-core > Could not resolve net.unicon.iam:duo-client:0.2.2. > Could not get resource 'https://repo.spring.io/plugins-release/net/unicon/iam/duo-client/0.2.2/duo-client-0.2.2.pom'. > Could not GET 'https://repo.spring.io/plugins-release/net/unicon/iam/duo-client/0.2.2/duo-client-0.2.2.pom'
【解决方法】
duojava : [ dependencies.create("net.unicon.iam:duo-java:$duoVersion") { exclude(group: "org.slf4j", module: "slf4j-api") force = true }, // dependencies.create("net.unicon.iam:duo-client:0.2.2") { // exclude(group: "org.slf4j", module: "slf4j-api") // force = true // } dependencies.create("com.duosecurity:duo-client:0.3.0") { exclude(group: "org.slf4j", module: "slf4j-api") force = true } ],
-
jcifs-ext问题:
Could not resolve all files for configuration ':support:cas-server-support-spnego:compileClasspath'. > Could not resolve org.samba.jcifs:jcifs-ext:0.9.4. Required by: project :support:cas-server-support-spnego > Could not resolve org.samba.jcifs:jcifs-ext:0.9.4. > Could not get resource 'https://repo.spring.io/plugins-release/org/samba/jcifs/jcifs-ext/0.9.4/jcifs-ext-0.9.4.pom'. > Could not GET 'https://repo.spring.io/plugins-release/org/samba/jcifs/jcifs-ext/0.9.4/jcifs-ext-0.9.4.pom'
【解决方法】
参考SPNEGO-Authentication.md中提到的解决方法,将jcifs-ext.jar下载到support/cas-server-support-spnego/lib/下,然后在support/cas-server-support-spnego/build.gradle和support/cas-server-support-spnego-webflow/build.gradle中添加该文件:
implementation files(project(":support:cas-server-support-spnego").file("lib/jcifs-ext.jar"))
编辑gradle/dependencies.gradle,注释掉jcifs-ext的依赖:
jcifs : [ dependencies.create("jcifs:jcifs:$jcifsVersion") { exclude(group: "javax.servlet", module: "servlet-api") force = true }, // dependencies.create("org.samba.jcifs:jcifs-ext:$jcifsExtVersion") { // exclude(group: "javax.servlet", module: "servlet-api") // force = true // } ],
-
node下载和版本问题:
Execution failed for task ':webapp:cas-server-webapp:nodeSetup'. > Could not resolve all files for configuration ':webapp:cas-server-webapp:detachedConfiguration134'. > Could not resolve org.nodejs:node:8.11.2. Required by: project :webapp:cas-server-webapp > Could not resolve org.nodejs:node:8.11.2. > Could not get resource 'https://nodejs.org/dist/v8.11.2/ivy.xml'. > Could not GET 'https://nodejs.org/dist/v8.11.2/ivy.xml'.
【解决方法】
原因是nodejs.org这个库无法访问,改用镜像网站即可。编辑webapp/gradle/webapp.gradle,改为镜像网站:
node { version = "${nodeVersion}" nodeModulesDir = project(":webapp").projectDir // https://mirrors.tuna.tsinghua.edu.cn/nodejs-release for China // or https://mirrors.dotsrc.org/nodejs/release distBaseUrl = 'https://mirrors.tuna.tsinghua.edu.cn/nodejs-release' download = true }
再次编译时出现下面的错误:
> Task :webapp:cas-server-webapp:npm_cache_verify
npm ERR! stream.push() after EOF
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\shi.jinghai-honor\AppData\Roaming\npm-cache\_logs\2024-03-07T07_23_57_255Z-debug.log
> Task :webapp:cas-server-webapp:npm_cache_verify FAILED
FAILURE: Build failed with an exception.
【解决方法】
编辑gradle.properties文件,nodeVersion改用8.12.0:
# nodeVersion=8.11.2
nodeVersion=8.12.0
-
jgit版本问题:
org/eclipse/jgit/api/Git has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
原因:编译时使用的jgit版本高了,需要指定一个较低的版本。
【解决方法】
在build.gradle文件中,添加符合JDK 1.8的jgit版本限定:
dependencies {
...
classpath("org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r") {
force true
}
classpath("org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r") {
force true
}
}
--- End ---