[转载文章]
首先下载tomcat源码**
下载地址如下:
http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.46/src/
http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.46/src/apache-tomcat-8.5.46-src.tar.gz
测试8.5.61不可用该方法
- 解压压缩包
注意将压缩包解压到一个空的文件夹中,这里解压到了tomcat-8.5.61-source文件夹中
- 创建实例文件夹
创建一个catalina-home文件夹,这个文件夹存放着真正运行的tomcat实例
- 拷贝文件及创建文件夹
将解压的文件夹中的conf和webapps文件夹拷贝到实例文件夹中
在实例文件夹中接着创建lib、logs和temp文件夹(空的文件夹就可以了)
- 创建pom文件
首先在最外层的文件夹中,也就是tomcat-8.5.61-source文件夹中创建pom.xml文件
内容如下
1 |
|
注意这个module标签的内容就是解压后的文件夹的名字
接着在解压后的文件夹中创建pom.xml文件
内容如下
1 |
|
- 使用Idea导入项目
选中最外层文件夹中的pom文件导入就可以了
设置Source 文件夹:
- 配置项目入口
打开配置页面
选择application
这里的Main class选择解压后的文件夹中的java文件夹中的org.apache.catalina.startup.Bootstrap
添加JVM参数,参数如下
1 | -Dcatalina.home=catalina-home |
Use classpath of module这里选择Tomcat8.5.46
- 删除test文件夹
在idea中删除解压后的文件夹中的test文件夹,否则在构建项目的时候会报错
- 手动加载jsp
org.apache.catalina.startup.ContextConfig#webConfig 779行
我们直接启动org.apache.catalina.startup.Bootstrap的时候没有加载org.apache.jasper.servlet.JasperInitializer,从而无法编译JSP。这在Tomcat6/7是没有这个问题的。解决办法是在tomcat的源码org.apache.catalina.startup.ContextConfig中手动将JSP解析器初始化。
添加
1 | context.addServletContainerInitializer(new JasperInitializer(), null); |
修改目标发行版