Apereo CAS 调试
如何在 Intellij 里调试
其实只要 java -jar cas.war 起起来,然后加个 debug jvm agent 参数就完事了。但是毕竟自己打命令还是麻烦,所以我们这边用 intellij 来跑我们的 war 包,跑起来的时候 intellij 自己就会帮我们把参数加上,并且把 debugger attach 到这个 jmv 里,非常方便。
注意这个 Before launch 区域,我们可以在跑 war 包之前加一个动作,让 intellij 跑一个 clean build
的 task,这样每次运行的包都能保证是最新的。
如何调试 war 包里的 lib
在 org.apereo.cas:cas-server-webapp-tomcat:war
里的 WEB-INF/lib
目录下可以看到很多 jar 包,包括 cas-server-core
。这时候我们会发现在 Intellij 里双击 shift 然后输入包里的类 (比如 DefaultCentralAuthenticationService
这个类),是没法找到的。因为这个 jar 包里的 lib 的源码不在 source.jar 里。
怎么办呢?我们需要直接把它引入到项目里,就能调试了:
testCompile group: 'org.apereo.cas', name: 'cas-server-core', version: project.'cas.version'
把它放到 testCompile 里可以避免我们在 build cas.war 的时候把这个包重复引入,这样就达到了既能调试又能不引入多余依赖的效果。