Netty源码编译调试

github仓库fork代码到自己的仓库 github.com/netty/netty ,然后clone到本地。由于netty用maven进行项目管理,所以相对gradle方便很多,直接用idea打开即可

2.类不存在问题

clone代码之后,我们找到example的io.netty.example.http.websocketx.server.WebSocketServer,准备debug启动,这时候发现在codec-redis模块内的一些引包报错了

Netty源码编译调试

进入netty-common模块下发现并没有这些类,但是有个groovy的脚本。 进入netty-common目录,运行mvn compile。发现报错

Netty源码编译调试

发现有个netty-tools的包下载不下来

3.解决dev-tools问题

我们发现其实netty-common在编译阶段并不需要io.netty:netty-dev-tools:jar这个包,于是在父pom文件中,把这段代码注释

<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-remote-resources-plugin</artifactId>
          <version>1.5</version>
          <configuration>
            <resourceBundles>
              <resourceBundle>io.netty:netty-dev-tools:${project.version}</resourceBundle>
            </resourceBundles>
            <outputDirectory>${netty.dev.tools.directory}</outputDirectory>
            <attachToMain>false</attachToMain>
            <attachToTest>false</attachToTest>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>process</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
复制代码

同时在netty-common的pom.xml中去掉对dev-tools的引用

<dependency>
      <groupId>io.netty</groupId>
      <artifactId>netty-dev-tools</artifactId>
      <version>${project.version}</version>
      <scope>test</scope>
      <optional>true</optional>
    </dependency>
复制代码

然后在netty-common下执行 mvn clean package -Dmaven.test.skip=true,执行成功在netty-common的target下发现生成的class文件

Netty源码编译调试

4.运行example

运行io.netty.example.http.websocketx.server.WebSocketServer,程序正常启动

Netty源码编译调试

接下来就可以边debug边看源码

原文 

https://juejin.im/post/5ebcbe0cf265da7c01703628

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Netty源码编译调试

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址