一、搭建Ant环境
(1)Tomcat与Ant之间的关系
Ant是一个项目构建工具(类似Maven),它可以编译java类,生成class文件,也可以将一个完整的项目打包成web包并发布到Tomcat中。
(2)下载地址:Ant官网
下载完后解压即用,我这里是直接在windows上搭建的,解压到了F:\apache-ant-1.10.7下。
(3)配置Ant环境变量
右击我的电脑-属性-高级系统设置-环境变量,新建一个ANT_HOME变量名,变量值为F:\apache-ant-1.10.7,然后在path中添加%ANT_HOME%\bin即可。
(4)查看Ant版本
win+r进入cmd执行“ant -v”命令
以上结果表示Ant已经搭建成功了,下面准备开始导入Tomcat源码。
二、导入Tomcat源码
(1)下载tomcat源码并导入到IDEA中
下载地址:Tomcat官网
下载完后进行解压,然后打开IDEA通过Open直接打开刚刚解压后的文件,打开后需要指定一下JDK。
(2)将该项目变为Maven项目
在项目的根目录下新建一个pom.xml文件,然后右击pom.xml选择Add as Maven Project变为Maven项目。
这里我们先不添加pom.xml文件内容,后续再进行添加。
(3)将org.eclipse.jdt.core包打入Maven本地仓库
tomcat源码需要使用eclipse编译器这个jar包(Eclipse提供的一组API,Tomcat有所依赖),因为远程maven库是没有这个jar包的,所以需要自己将这个jar包打入到本地maven仓库中。这个jar包在eclipse的plugins文件夹下,搜索org.eclipse.jdt.core找到这个jar包并进行打入。我们可以直接通过IDEA工具打入。
打包命令:
mvn install:install-file -Dfile=F:\jars\core-3.20.0.jar -DgroupId=org.eclipse.jdt -DartifactId=core -Dversion=3.20.0 -Dpackaging=jar
命令参数说明:
-Dfile:org.eclipse.jdt.core包的位置
-DgroupId:打到 Maven 仓库对应 pom 文件中引用的 groupId
-DartifactId:打到 Maven 仓库对应 pom 文件中引用的 artifactId
-Dversion:版本号
-Dpackaging:打包方式 jar或war
查看控制台的打包结果
(4)添加pom.xml文件内容
<?xml version="1.0" encoding="UTF-8"?>
<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.0</modelVersion>
<groupId>org.apache.tomcat</groupId>
<artifactId>Tomcat9.0</artifactId>
<name>Tomcat9</name>
<version>9.0.20</version>
<build>
<finalName>Tomcat9</finalName>
<sourceDirectory>java</sourceDirectory>
<resources>
<resource>
<directory>java</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.10.1</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-apache-log4j</artifactId>
<version>1.9.5</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-commons-logging</artifactId>
<version>1.9.5</version>
</dependency>
<dependency>
<groupId>javax.xml.rpc</groupId>
<artifactId>javax.xml.rpc-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.eclipse.jdt/org.eclipse.jdt.core -->
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>core</artifactId>
<version>3.20.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>4.0.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
(5)启动tomcat
打开java包下面的org.catalina.startup.Bootstrap类,这个类是整个Tomcat的入口,运行这个类里面的main()方法进行启动测试,没有报错且出现了tomcat的端口则表示启动成功!
如果报java.lang.ClassNotFoundException: listeners.ContextListener错误,那么删除Webapps下面的example工程,再次启动就成功了。。。因为example工程里面都是一些示例,在源码编译中会报错,干扰我们的正常启动,可以先删掉。