本地編譯Netty并打包成指定的版本
首先從GitHub下載Netty源碼
https://github.com/netty/netty
雖然下載了源碼, 一般情況我們會針對特定的tag版本進(jìn)行學(xué)習(xí)研究.
使用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
執(zhí)行以下命令
// 根據(jù)netty-4.1.60.Final這個tag版本創(chuàng)建一個本地分支netty-tmpgit 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模塊都注釋掉

執(zhí)行Common下的install命令

執(zhí)行rebuild

代碼中會出現(xiàn)一些斷言錯誤, 直接將錯誤代碼注釋掉即可


把父pom.xml文件中關(guān)鍵字是com.github.siom79.japicmp的plugin刪除.
全局搜索xml文件中的maven-checkstyle-plugin關(guān)鍵字, 把與checkstyle相關(guān)的plugin全部刪除. (大約分布在6個地方)
由于我們指定的版本是4.1.60.Final, 為了不引起沖突, 我們把這個版本的名稱改成4.1.60.3.Final(名稱任意), 全局搜索xml文件, 然后全部替換掉就可以.(大約85處)

在NioEventLoopGroup文件的構(gòu)造器中添加測試內(nèi)容

最后執(zhí)行打包

執(zhí)行完成之后, 我們可以在本地的倉庫中找到打包后的文件

接下來進(jìn)入驗證階段


驗證階段

在另一個工程中, 依賴上面的4.1.60.3.Final版本

測試代碼
public static void main( String[] args ) {// 我們就是在這個文件中添加了代碼, 現(xiàn)在直接調(diào)用構(gòu)造器NioEventLoopGroup boss = new NioEventLoopGroup(1);}
輸出內(nèi)容如下

你可以通過這種方式, 修改源碼之后, 重新打包, 然后在其他項目依賴這個包, 用于排查一些問題, 或者學(xué)習(xí)使用.
整體操作下來還是比較麻煩的, 但基本上只需要操作一次, 后面基本也就不會再調(diào)整修改.
