问题
debug时,到了tomcat的源码就进不去,只能看到变量,看不到类。关于servlet部分的配置如下
pom.xml
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
分析
tomct源码在groupid为org.apache.*的依赖中,org.apache.*部分的依赖没配置,所以maven不会下载源码。
基于此,大胆推测,如果将tomcat依赖配置在pom.xml中,maven肯定会下载源码。
所以pom.xml中添加tomcat依赖,并且scope是provided,重启intellij idea,果然work了。
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<version>8.5.28</version>
<scope>provided</scope>
</dependency>
后续,居然又不work了
因为maven工程中,用了parent-child模式,在parent工程pom.xml的dependencymanagement定义了
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<version>8.5.28</version>
<scope>provided</scope>
</dependency>
child工程定义了groupid、artifactid
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
</dependency>
但是不work!没办法只好又加了scope,又work了,怀疑是intellij idea的bug
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<scope>provided</scope>
</dependency>
想了想,如有可能使用内嵌式tomcat也不错,debug tomcat源码方便,再一个不用重复安装tomcat。
最终建议
最终还是建议使用嵌入式Tomcat,既方便调试,也免去安装Tomcat的烦恼,同时还统一了Tomcat版本。
参考
cant step into app server source codeDebugging application server and application itself
公众号