首页 文章详情

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

Netty历险记 | 535 2021-04-13 10:10 0 0 0
UniSMS (合一短信)


首先从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-tmpgit branch netty-tmp netty-4.1.60.Final// 切换到netty-tmp分支git checkout netty-tmp


1

Maven配置






2

JDK配置



JDK1.8





3

修改内容





将父pom.xml中的1.61.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版本


测试代码

public static void main( String[] args ) {
    // 我们就是在这个文件中添加了代码, 现在直接调用构造器     NioEventLoopGroup boss = new NioEventLoopGroup(1);}


输出内容如下



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


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



good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter