关于tomcat源码的编译和环境搭建自己也是拖了一段时间,今天还是硬着头皮来做一做,还是有所收获。
tomcat源码的编译还是首选ant,作为apache的顶级项目ant,可以参见下面的链接进行下载,下载一个二进制运行包即可。
然后就需要在path中配置了。
简单的校验
C:\Users\jeanron>ant -version
Apache Ant(TM) version 1.9.5 compiled on May 31 2015
然后下载tomcat的源码,在tomcat.apache.org中可以选择,为了兼容jdk版本,我选择的是tomcat7
下载解压后,需要在目录中修改下面的文件。
重命名build.properties.default 为build.properties
然后在build.properties中修改base.path
默认是:
base.path=/usr/share/java
因为本地是windows环境,所以修改为下面的样式。
base.path=D:/tomcat7/output
根据官方建议,最好还是build.properties中配置下面的proxy配置。自己在本地比较了下,不配置基本上界面没什么反应,配置之后速度还是很快的。
proxy.use=on
proxy.host=proxy.domain
proxy.port=8080
proxy.user=username
proxy.password=password
当然了jdk版本也是必须的,我在本地使用的1.6.
然后就开始build。
D:\tomcat7>ant
Buildfile: D:\tomcat7\build.xml
build-prepare:
[mkdir] Created dir: D:\tomcat7\output\classes
[mkdir] Created dir: D:\tomcat7\output\build
[mkdir] Created dir: D:\tomcat7\output\build\bin
[mkdir] Created dir: D:\tomcat7\output\build\conf
[mkdir] Created dir: D:\tomcat7\output\build\lib
[mkdir] Created dir: D:\tomcat7\output\build\logs
[mkdir] Created dir: D:\tomcat7\output\build\temp
[mkdir] Created dir: D:\tomcat7\output\build\webapps
download-compile:
testexist:
[echo] Testing for D:/tomcat7/output/tomcat-native-1.1.33/tomcat-native.ta
r.gz
downloadfile-2:
proxyflags:
setproxy:
[echo] Using proxy.domain:8080 to download
t/tomcat-connectors/native/1.1.33/source/tomcat-native-1.1.33-src.tar.gz
trydownload.check:
trydownload:
[get] Getting:
1.1.33/source/tomcat-native-1.1.33-src.tar.gz
[get] To: D:\tomcat7\output\download-2067852301.tmp
当然了build的过程也不是一帆风顺的,比如网络的问题,直接超时退出。
D:\tomcat7\build.xml:2927: java.net.ConnectException: Connection timed out: conn
ect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketI
mpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.ja
va:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocket
Impl.java:200)
在另外一台环境中使用jdk 1.7的版本,竟然在build的时候有些问题。
....
[javac] ^
[javac] D:\tomcat7\output\tomcat7-deps\dbcp\src\java\org\apache\tomcat\dbcp\
dbcp\datasources\PerUserPoolDataSource.java:60: 错误: PerUserPoolDataSource不是
抽象的, 并且未覆盖CommonDataSource中的抽象方法getParentLogger()
[javac] public class PerUserPoolDataSource
[javac] ^
[javac] D:\tomcat7\output\tomcat7-deps\dbcp\src\java\org\apache\tomcat\dbcp\
dbcp\datasources\SharedPoolDataSource.java:52: 错误: SharedPoolDataSource不是抽
象的, 并且未覆盖CommonDataSource中的抽象方法getParentLogger()
[javac] public class SharedPoolDataSource
[javac] ^
[javac] 注: 某些输入文件使用或覆盖了已过时的 API。
[javac] 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
[javac] 注: 某些输入文件使用了未经检查或不安全的操作。
[javac] 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
[javac] 15 个错误
[javac] 1 个警告
BUILD FAILED
D:\tomcat7\build.xml:2686: The following error occurred while executing this lin
e:
D:\tomcat7\build.xml:2790: Compile failed; see the compiler error output for det
ails.
Total time: 1 minute 21 seconds
最后换成1.6就没有问题了。
build:
[javac] Compiling 31 source files to C:\tomcat7\output\jdbc-pool\classes
[jar] Building jar: C:\tomcat7\output\jdbc-pool\tomcat-jdbc.jar
[copy] Copying 1 file to C:\tomcat7\output\build\lib
BUILD SUCCESSFUL
Total time: 2 minutes 1 second
源码的编译高一段落,接下来就是在eclipse中导入了,
可以直接新建一个java project,然后选择tomcat源码的路径即可。导入源码的截图如下:
当然了还有依赖的包。
还有几个依赖的包,比如ant...
不过直接通过eclipse还是能够顺利启动的
INFO: Deploying web application directory C:\tomcat7\webapps\ROOT
Jun 29, 2015 11:47:20 PM org.apache.catalina.startup.TldConfig execute