源码编译tomcat

背景

公司是做产品的公司,发现有些公司的产品跟公司一模一样,这其实是公司有开发人员携带公司源码出去另外创业去了。。。,公司领导让搞一个源码加密解密的东西,我的思路就是写一个加密工具,把所有的war包里面的class文件都改变一下结构,然后修改tomcat代码,运行期解密,花了大概2周左右搞好了这个东西,期间还被测试有一个小bug,不过很快就fix掉了,目前公司一个产品线的项目都是跑在这种出自我编译的tomcat,感觉倍爽啊。不过,说实在的,搞这个东西,其实也只是满足公司老板的心理而已,其实际作用却是很低的,源码泄露才是根本,而不是反编译之后的Java代码。

所需工具

jdk

这个是编译java代码必须的,不再赘述了。

git

其实这个工具也不是必须的,在tomcat的官网上也有代码可以下载,但感觉没有那样的代码没有日志,而且每一个版本都是零散的,而使用git克隆下载,就集齐了好几个大版本号的代码,比较方便,具体git安装方式不再赘述,大家也都是有经验的开发人员了嘛 :)

ant

tomcat编译需要用ant这种古老的集成软件进行构建,所以没有的话就装一下,在ubuntu下,最简单的方式就是执行apt命令安装:

sudo apt install ant

clone代码

首先我们从gitee上克隆代码,为什么要选择gitee呢?一方面,荷包有限,搞不起翻墙软件,另一方面,速度快啊,基本上90多兆的源码,十几秒就下载下来了,如果使用github,估计要下载1个小时吧。执行一下命令进行克隆:

git clone [email protected]:mirrors/tomcat.git

克隆好之后,我们可以checkout一个具体的分支进行编译,比如这里我们选择7.0.100的tag进行编译,那么就checkout这个版本:

git checkout 7.0.100

ant命令编译

克隆完代码之后,进入tomcat目录,然后如下代码进行编译:

ant release

大概过10多分钟吧,tomcat就编译好了,然后我们在tomcat目录找到output目录,找到这个目录下的release目录,这个目录里面就是已经打包好的各种tomcat发行包了。

依赖jar包的快速下载

有时候可能因为网络原因,ant在下载一些依赖jar包的时候,总是速度很慢,或是发生网络错误,停止构建了,那么有两种方法解决这个问题:

1.继续重试命令 ant release,让其再次下载试试
2.自己找依赖的jar包,然后放到相应应的位置,具体位置可根据编译的提示进行放置,具体就不赘述了。

针对不同版本的特殊处理

针对7版本,会提示需要指定java.7.home系统属性,那么我们可以在运行ant命令时指定其路径:

ant release -Djava.7.home=/home/weiguangyue/javaer/jdk1.8

虽然是要求指定java7的路径,但这里使用了jdk1.8,其实效果也是一样的。

导入IDE

收获

经过2周对tomcat的接触,对tomcat有了更深的一些了解,解决某些问题有了更好的思路了,比如一个请求来了,我可以直接在tomcat的代码里面下断点进行调试,这也确实是比较实用技能啊。

其实tomcat的源码质量并不高,大部分代码很凌乱,稍微了解就好,感觉细读也没有太大必要。

猜你喜欢

转载自www.cnblogs.com/weiguangyue/p/12343557.html