本地编译Netty并打包成指定的版本

2022-06-02 14:18:34 浏览数 (1)

首先从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

执行以下命令

代码语言:javascript复制
// 根据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配置

2

JDK配置

JDK1.8

3

修改内容

将父pom.xml中的1.6和1.7都改成1.8

将父pom.xml中的所有test模块都注释掉

4

其他操作

执行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版本

测试代码

代码语言:javascript复制
public static void main( String[] args ) {

    // 我们就是在这个文件中添加了代码, 现在直接调用构造器 
    NioEventLoopGroup boss = new NioEventLoopGroup(1);
}

输出内容如下

你可以通过这种方式, 修改源码之后, 重新打包, 然后在其他项目依赖这个包, 用于排查一些问题, 或者学习使用.

整体操作下来还是比较麻烦的, 但基本上只需要操作一次, 后面基本也就不会再调整修改.

0 人点赞