标签:容器 选择 ref intellj 新建 let cal startup out
这篇博客写于 12 月 12 日,从 github[1] 上 fork 了一份 tomcat 的源代码,clone 到了本地。最近想把 tomcat 的源代码分析一下,寒假的时候有完整的时间就造个轮子。
看源码,总不能干看,边看边改,验证想法。所以这个系列从构建 tomcat 开始。首先要声明的是,以前没有完整看过一个项目的经历,tomcat 是第一次尝试看的源码。因此,这个系列可能存在描述不正确的问题,希望读者能帮忙指正。最后,感谢您的阅读!
这篇博客主要内容是,在 Windows 上,使用 Intellj-IDEA 编译运行 Tomcat。
读源代码,要带着问题去阅读。有一些是自己想的,有一些是 How Tomcat Works[2] 的目录,还有一些来自于别人的博客[3]。
问题就暂且提出这些。不知道这个 Tomcat 源码阅读系列是否能够完成呢(/▽\)。不管怎样,先搭个环境,用自己喜欢的 IDE(IntelliJ IDEA) 来阅读、调试源码。
获取源代码,安装对应的 JDK 版本,下面就不解释了。下面主要讲讲如何使用 Ant 工具来开发,在写这篇博客之前,其实我自己也没有想到构建 Tomcat 是很简单的事情。官方还很贴心的考虑到了,开发者可能会使用 IDE 来开发,于是给开发者配置好了环境。使用对应的 Ant 任务就可以有对应 IDE 的工程文件了。下面的步骤,具体可以看官方的构建步骤。
直接去这里下载 Ant 的包,然后配置环境变量。
添加一个新的环境变量:
变量名:ANT_HOME
变量值:C:\Program Files\apache-ant-1.9.15
增加如下到 Path
中。
变量值:%ANT_HOME%\bin
在 cmd 当中输入 ant
,如果可以找到命令,那么说明成功了。
进入下载好的 Tomcat 目录中,我这里 tomcat 的根目录是 D:\Code\tomcat
。
新建一个文件 build.properties
,复制以下的内容。指定依赖包的保存地址。
# ----- Default Base Path for Dependent Packages -----
# Replace this path with the directory path where dependencies binaries
# should be downloaded
base.path=D:\\Code\\tomcat\\lib
输入 ant
即可,他会先下载构建需要的包,然后构建项目。构建好了如何运行呢?这个请不要着急,往后看会讲的。
输入命令 ant ide-intellij
即可构建 IDEA 的项目。官方还提供了 eclipse 和 netbean。
接下来,就会下载 IDEA 需要的包,并且会将提供的项目文件复制到 Tomcat 目录下。之后就可以使用 IDEA 来打开了。
官方的代码里面,build.properties.default
和 res\ide-support
下的版本对应不上,于是会出现下面的报错。下面给出两种解决方案。
添加依赖。
打开 Project Structure
添加依赖
修改 res\ide-support\idea\tomcat.iml
中对应的版本,然后重新构建就好了。
Tomcat 的运行有两种方式,一种是使用官方的脚本来运行,另一种是使用 org.apache.catalina.startup
中的 BootStrap 类。
首先使用 ant
构建好项目,然后进入 output\build
文件夹。
接着修改 conf\logging.properties
下的编码,不然控制台要输出乱码了。
最后进入,bin\startup.bat
双击一下就可以运行了。进入 http://localhost:8080/ 就可以查看是否运行成功。
使用 org.apache.catalina.startup
中的 BootStrap 类。使用 IDEA 来启动这个类。首先要配置好参数,我们把方式一中的命令行参数拷贝到 IDEA 的启动参数里面即可。
不过 IDEA 的控制台输出仍然会有乱码,可以选择使用英文来避免这个问题。
-Djava.util.logging.config.file=D:\Code\tomcat\output\build\conf\logging.properties
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djdk.tls.ephemeralDHKeySize=2048
-Djava.protocol.handler.pkgs=org.apache.catalina.webresources
-Dcatalina.base=D:\Code\tomcat\output\build
-Dcatalina.home=D:\Code\tomcat\output\build
-Djava.io.tmpdir=D:\Code\tomcat\output\build\temp
-Dfile.encoding=UTF-8
-Duser.language=en
-Duser.region=US
点击启动!so easy。接下来就是一边阅读源码,一边调试看看了。
[1] https://github.com/apache/tomcat
[2] How Tomcat Works 2
[3] http://www.iocoder.cn/Tomcat/Tomcat-collection/
[4] https://tomcat.apache.org/tomcat-10.0-doc/building.html
标签:容器 选择 ref intellj 新建 let cal startup out
原文地址:https://www.cnblogs.com/zzk0/p/14127315.html