从官方仓库 https://github.com/apache/incubator-skywalking Fork 出属于自己的仓库。为什么要 Fork ?既然开始阅读、调试源码,我们可能会写一些注释,有了自己的仓库,可以进行自由的提交。:smiling_imp:
使用 IntelliJ IDEA 从 Fork 出来的仓库拉取代码。拉取完成后, Maven 会下载依赖包,可能会花费一些时间,耐心等待下。
本文基于 master 分支,使用 SkyWalking 6.0.0-beta-SNAPSHOT 版本。
参考 《官方文档 —— How to build》
打开 IntelliJ IDEA Terminal 中,执行输入命令:
设置 gRPC 的 自动生成 的代码目录,为 源码 目录 :
将 apm-protocol/apm-network/target/generated-sources/protobuf 目录下面 grpc-java 和 java 目录 右键 设置为 Generated Rources Root 。
安装 ElasticSearch 6.x 因为 SkyWalking 的 Tracing 的数据存储在它上面。具体的安全过程,胖友看看 《ElasticSearch 6.x 学习笔记:1.下载安装与配置》 。
运行 oap-server 的 server-starter 的 org.apache.skywalking.oap.server.starter.OAPServerStartUp 的 #main(args) 方法,启动 SkyWalking OAP Server 。
启动成功日志。
2018-11-19 17:12:26,331 - org.eclipse.jetty.server.Server - 71 [main] INFO [] - Started @5389ms
友情提示 : 这里一定要注意下 。创建的 Web 项目,使用 IntelliJ IDEA 的 菜单 File / New / Module 或 File / New / Module from Existing Sources , 保证 Web 项目和 SkyWalking 项目平级 。这样,才可以使用 IntelliJ IDEA 调试 Agent 。
在 org.skywalking.apm.agent.SkyWalkingAgent 的 #premain(...) 方法,打上调试断点。
-T 1C clean package -Dmaven.test.skip=true -Dmaven.compile.fork=true 。
考虑到可能我们会在 Agent 上增加代码注释,这样每次不得不重新编译 Agent 。可以配置如下图,自动编译 Agent :
-T 1C clean package -Dmaven.test.skip=true -Dmaven.compile.fork=true 。
666. 彩蛋
因为准备重新读 SkyWalking 6.x 的代码,所以又简单的整理了下,这次的完成度更低,哈哈哈哈:
另外,超级推荐看看胖友在录制的 SkyWalking 的视频,快来点击传送门 。