从github仓库fork代码到自己的仓库 github.com/netty/netty ,然后clone到本地。由于netty用maven进行项目管理,所以相对gradle方便很多,直接用idea打开即可
clone代码之后,我们找到example的io.netty.example.http.websocketx.server.WebSocketServer,准备debug启动,这时候发现在codec-redis模块内的一些引包报错了
进入netty-common模块下发现并没有这些类,但是有个groovy的脚本。 进入netty-common目录,运行mvn compile。发现报错
发现有个netty-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文件
运行io.netty.example.http.websocketx.server.WebSocketServer,程序正常启动
接下来就可以边debug边看源码了