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


    前言

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

    正确步骤

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

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

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

    (一)拉取项目编译阶段

    千万不要一上来就git clone

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

    1. git clone --recurse-submodules https://github.com/apache/skywalking.git
    2. cd skywalking/
    3. OR
    4. git clone https://github.com/apache/skywalking.git
    5. cd skywalking/
    6. git submodule init
    7. git submodule update

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

    1. [submodule "apm-protocol/apm-network/src/main/proto"]
    2. path = apm-protocol/apm-network/src/main/proto
    3. url = https://github.com/apache/skywalking-data-collect-protocol.git
    4. [submodule "oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol"]
    5. path = oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol
    6. url = https://github.com/apache/skywalking-query-protocol.git
    7. [submodule "skywalking-ui"]
    8. path = skywalking-ui
    9. url = https://github.com/apache/skywalking-rocketbot-ui.git
    10. [submodule "test/e2e-v2/java-test-service/e2e-protocol/src/main/proto"]
    11. path = test/e2e-v2/java-test-service/e2e-protocol/src/main/proto
    12. url = 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即可

  • 相关阅读:
    vue基础知识七:SPA首屏加载速度慢的怎么解决?
    vue3 props传值默认类型
    大力说企微第一课:企业微信的注册验证和认证
    你真的懂单例模式么
    C#面:简单介绍 序列化 和 反序列化
    [附源码]Python计算机毕业设计Django水果管理系统
    Lumerical---FDE(Finite Difference Eigenmode) Solver
    幸福里基于 Flink & Paimon 的流式数仓实践
    Java内存模型——创建对象在堆区如何分配内存
    23种设计模式之工厂模式(不包括抽象工厂)
  • 原文地址:https://blog.csdn.net/qq_29914229/article/details/133308922