当前位置: 首页 > news >正文

skywalking源码本地编译运行经验总结

前言

最近工作原因在弄skywalking,为了进一步熟悉拉了代码下来准备debug,但是编译启动项目我就费了老大劲了,所以准备写这篇,帮兄弟们少踩点坑。

正确步骤

既然是用开源的东西,那么最好就是按照人家的方式使用,别随便百度找一些自作聪明的做法,最后一个坑接一个坑。

https://github.com/apache/skywalking/blob/master/docs/en/guides/How-to-build.md

这里我附上了官方如何构建的教程

(一)拉取项目编译阶段

千万不要一上来就git clone

因为skywalking项目中有一些协议是不在skywalking这个项目里的,是在别的项目里的,比如apm-network

git clone --recurse-submodules https://github.com/apache/skywalking.git
cd skywalking/ORgit clone https://github.com/apache/skywalking.git
cd skywalking/
git submodule init
git submodule update

官方给出了对应的两种拉取项目代码的方式,具体有哪些代码是从其他项目里拉取,可以看根目录的 .gitmodules 文件,对应的这些都是。

[submodule "apm-protocol/apm-network/src/main/proto"]path = apm-protocol/apm-network/src/main/protourl = https://github.com/apache/skywalking-data-collect-protocol.git
[submodule "oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol"]path = oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocolurl = https://github.com/apache/skywalking-query-protocol.git
[submodule "skywalking-ui"]path = skywalking-uiurl = https://github.com/apache/skywalking-rocketbot-ui.git
[submodule "test/e2e-v2/java-test-service/e2e-protocol/src/main/proto"]path = test/e2e-v2/java-test-service/e2e-protocol/src/main/protourl = https://github.com/apache/skywalking-data-collect-protocol.git

项目拉取成功之后进行编译即可

mvn compile -Dmaven.test.skip=true

该部分相关问题

1. skywalking项目拉取正常,但是拉取相关其他项目代码的时候出现connect timeout之类的

建议开梯子,这是最优方案

2.我还遇到个最极端的,就是都拉取成功了,但是编译的时候,xxxxxx类找不到

最后找了很久下来发现,还是拉取的东西不全,解决方案可以删除对应的目录,比如apm-protocol/apm-network/src/main/proto,具体看是哪个类找不到哈,删除完之后 git submodule init,git submodule update就可以了

3.编译的时候建议将apm-webapp模块下的frontend-maven-plugin插件注释掉,这块会去装npm很慢,咱也用不上,主要还是看后端代码

(二)运行项目

项目编译成功之后,idea运行报错xxxxxxx不存在,因为skywalking中部分代码是编译生成的,所以需要将对应这些目录mark as source root即可

http://www.lryc.cn/news/180068.html

相关文章:

  • K8s架构简述
  • linkedlist和arraylist的区别
  • [尚硅谷React笔记]——第2章 React面向组件编程
  • 嵌入式学习笔记(40)看门狗定时器
  • 点击、拖拉拽,BI系统让业务掌握数据分析主动权
  • C++模拟题[第一周-T1] 扑克
  • ciscn_2019_s_9
  • 微信、支付宝、百度、抖音开放平台第三方代小程序开发总结
  • C语言协程
  • RK3588安装python3.11(ubuntu18.04)
  • ‘Could not find first log file name in binary log index file‘的解决办法
  • 快速排序与冒泡排序以及代码
  • [React] 性能优化相关 (一)
  • 云中网络的隔离GREVXLAN
  • 【【萌新的RiscV学习之流水线控制-9】】
  • MySQL 通过存储过程高效插入100w条数据
  • 国庆10.1
  • [C++_containers]10分钟让你掌握vector
  • 前端与后端:程序中两个不同的领域
  • vue3 +elementplus | vue2+elementui 动态地通过验证规则子新增或删除单个表单字段
  • STM32之DMA
  • 解决前端二进制流下载的文件(例如:excel)打不开的问题
  • 动态规划算法(1)--矩阵连乘和凸多边形剖分
  • 通过Nginx重新认识HTTP错误码
  • 某房产网站登录RSA加密分析
  • 深度学习:基于长短时记忆网络LSTM实现情感分析
  • selenium使用已经获取的cookies登录网站报错unable to set cookie的处理方式
  • 初阶数据结构(四)带头双向链表
  • 2022年9月及10月
  • Vmware安装