![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAjM2EzLcd3LcJzLcJzdllmVldWYtl2Pn5GcuYzN0IWMjhTN5U2MlFWO0ETNlNWY3ETY0UDM2MWYzMjZvw1NzMjNxkDOtUGall3LcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.png)
官方位址
https://tomcat.apache.org/download-80.cgi
曆史版本:
https://archive.apache.org/dist/tomcat/tomcat-8/
這裡最新的是 8.5.55 ,我們就用這個吧
得到 apache-tomcat-8.5.55-src.zip
源碼搭建分析
我們在使用tomcat時,倆目錄 conf 和 webapps 是不是經常需要修改?
一個負責tomcat的配置檔案資訊,一個負責應用 。 很顯然,我們使用源碼建構tomcat環境的時候,也要告訴tomcat這兩個目錄的位置,以便加載配置檔案和應用。
不管形式怎麼變, 使用tomcat編譯好的二進制還是源碼部署編譯,tomcat該加載的配置檔案都是一樣的。
是以 ,使用源碼編譯需要做出點改變, 比如下面搭建步驟中建立source檔案夾目錄,存放conf和webapps(實際上,這個目錄名字愛叫啥,愛放哪 放哪, 我們隻要通過VM options 告訴tomcat就好了,為了友善管理,是以在源碼的一級目錄下建個目錄source)
源碼搭建步驟 (Maven管理)
Step1. 新增maven管理檔案 pom.xml
解壓apache-tomcat-8.5.55-src.zip 後 ,比如我這裡放到了D盤 , 在 D:\apache-tomcat-8.5.55-src 下 建立pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>org.apache.tomcatgroupId>
<artifactId>apache-tomcat-8.5.50-srcartifactId>
<name>Tomcat8.5name>
<version>8.5version>
<build>
<finalName>Tomcat8.5finalName>
<sourceDirectory>javasourceDirectory>
<resources>
<resource>
<directory>javadirectory>
resource>
resources>
<plugins>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-compiler-pluginartifactId>
<version>3.1version>
<configuration>
<encoding>UTF-8encoding>
<source>8source>
<target>8target>
configuration>
plugin>
plugins>
build>
<dependencies>
<dependency>
<groupId>javax.xmlgroupId>
<artifactId>jaxrpcartifactId>
<version>1.1version>
dependency>
<dependency>
<groupId>javax.xml.soapgroupId>
<artifactId>javax.xml.soap-apiartifactId>
<version>1.4.0version>
dependency>
<dependency>
<groupId>wsdl4jgroupId>
<artifactId>wsdl4jartifactId>
<version>1.6.2version>
dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compilergroupId>
<artifactId>ecjartifactId>
<version>4.5.1version>
dependency>
<dependency>
<groupId>antgroupId>
<artifactId>antartifactId>
<version>1.7.0version>
dependency>
<dependency>
<groupId>org.easymockgroupId>
<artifactId>easymockartifactId>
<version>3.4version>
dependency>
dependencies>
project>
複制
Step2. 處理conf 和 webapps
在 D:\apache-tomcat-8.5.55-src 下建立個source目錄 ,原因如上分析
在apache-tomcat-8.5.55-src下建立source檔案夾 ,将conf、webapps目錄移動到 source檔案夾中
這裡多了其他的,是因為我剛才已經啟動tomcat了…
Step3. 導入IEDA
3.1 配置Main Class
新增Application , 選擇Main class , 配置VM 參數
3.2 配置VM 參數
VM參數 ,告訴tomcat 家目錄一級 log日志檔案目錄。 【tomcat源碼運作需要加載配置檔案】
-Dcatalina.home=D:\apache-tomcat-8.5.55-src\source
-Dcatalina.base=D:\apache-tomcat-8.5.55-src\source
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=D:\apache-tomcat-8.5.55-src\source\conf\logging.properties
複制
完整的資訊如下:
Step4. 啟動tomcat
通路 http://locahost:8080/
原因: Jsp引擎Jasper沒有被初始化,進而無法編譯處理Jsp,Jsp是需要被轉換成servlet進一步編譯處理的,隻需要在tomcat的源碼ContextConfig類中的configureStart方法中增加一行代碼将Jsp引擎初始化
// 初始化Jasper (JSP解析引擎)
context.addServletContainerInitializer(new JasperInitializer(),null);
複制
重新開機再次通路 http://locahost:8080/