本地编译Netty并打包成指定的版本
首先从GitHub下载Netty源码
https://github.com/netty/netty
虽然下载了源码, 一般情况我们会针对特定的tag版本进行学习研究.
使用git tag命令查看所有的tag
netty-3.10.0.Final
netty-3.10.1.Final
netty-3.10.2.Final
...
netty-4.1.6.Final
netty-4.1.60.Final
netty-4.1.7.Final
netty-4.1.8.Final
netty-4.1.9.Final
netty-5.0.0.Alpha1
netty-5.0.0.Alpha2
这里我们选择netty-4.1.60.Final
执行以下命令
// 根据netty-4.1.60.Final这个tag版本创建一个本地分支netty-tmp
git branch netty-tmp netty-4.1.60.Final
// 切换到netty-tmp分支
git checkout netty-tmp
1
Maven配置
JDK1.8
将父pom.xml中的1.6和1.7都改成1.8
将父pom.xml中的所有test模块都注释掉
执行Common下的install命令
执行rebuild
代码中会出现一些断言错误, 直接将错误代码注释掉即可
把父pom.xml文件中关键字是com.github.siom79.japicmp的plugin删除.
全局搜索xml文件中的maven-checkstyle-plugin关键字, 把与checkstyle相关的plugin全部删除. (大约分布在6个地方)
由于我们指定的版本是4.1.60.Final, 为了不引起冲突, 我们把这个版本的名称改成4.1.60.3.Final(名称任意), 全局搜索xml文件, 然后全部替换掉就可以.(大约85处)
在NioEventLoopGroup文件的构造器中添加测试内容
最后执行打包
执行完成之后, 我们可以在本地的仓库中找到打包后的文件
接下来进入验证阶段
验证阶段
在另一个工程中, 依赖上面的4.1.60.3.Final版本
测试代码
public static void main( String[] args ) {
// 我们就是在这个文件中添加了代码, 现在直接调用构造器
NioEventLoopGroup boss = new NioEventLoopGroup(1);
}
输出内容如下
你可以通过这种方式, 修改源码之后, 重新打包, 然后在其他项目依赖这个包, 用于排查一些问题, 或者学习使用.
整体操作下来还是比较麻烦的, 但基本上只需要操作一次, 后面基本也就不会再调整修改.