• ddtrace 系列篇之 dd-trace-java 项目编译


    dd-trace-java 是 Datadog 开源的 java APM 框架,本文主要讲解如何编译 dd-trace-java 项目。

    环境准备

    • JDK 编译环境(三个都要:jdk8\jdk11\jdk17)
    • Gradle 8
    • Maven 3.9 (需要 15G 以上的存储空间存放依赖)
    • Git >=2 (低于会出现一想不到的异常,建议用最新版本)
    • 梯子
    • 内存 8G (如果二开,则需要 16G 以上)

    JDK

    • JDK version 8 must be installed.
    • JDK version 11 must be installed.
    • JDK version 17 must be installed.
    • JAVA_8_HOME must point to the JDK-8 location.
    • JAVA_11_HOME must point to the JDK-11 location.
    • JAVA_17_HOME must point to the JDK-17 location.
    • The JDK-8 bin directory must be the only JDK on the PATH (e.g. $JAVA_8_HOME/bin).
    • JAVA_HOME may be unset. If set, it must point to JDK-8 (same as JAVA_8_HOME).
      MacOS users, remember that /usr/libexec/java_home may control which JDK is in your path.

    建议用 JDK 11 进行编译,JDK 8 好像通不过,可以尝试。

    环境变量配置

    # JAVA
    export JAVA_17_HOME=/home/liurui/middleware/jdk/jdk-17.0.6
    export JAVA_11_HOME=/home/liurui/middleware/jdk/jdk-11.0.18
    export JAVA_8_HOME=/home/liurui/middleware/jdk/jdk1.8.0_361
    # ddtrace
    export DDTRACE_JAVA_HOME=$JAVA_11_HOME
    export JAVA_HOME=$DDTRACE_JAVA_HOME
    
    # gradle
    export GRADLE_8_HOME=/home/liurui/middleware/gradle-8.0.2
    export GRADLE_HOME=$GRADLE_8_HOME
    export GRADLE_USER_HOME=/home/liurui/middleware/gradle_repository
    
    # maven
    export M2_39_HOME=/home/liurui/middleware/apache-maven-3.9.1
    export M2_HOME=$M2_39_HOME
    
    
    
    PATH=$M2_HOME/bin:$JAVA_HOME/bin:$GRADLE_HOME/bin:$GROOVY_HOME/bin:$GO_HOME/bin:$DOTNET_ROOT:$PATH
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    源码下载

    观测云基于 ddtrace做了很多增强的功能,且会不定期同步官方的代码,保持官方与观测云代码同步

    
    git clone https://github.com/GuanceCloud/dd-trace-java.git
    
    
    • 1
    • 2
    • 3

    也可以基于官方的

    git clone https://github.com/DataDog/dd-trace-java.git
    
    
    
    • 1
    • 2
    • 3

    不要基于 master 分支,建议基于 tag 来编译,tag 是稳定的。

    比如当前最新tag为v1.19.0,用以下命令进行 checkout:

    git checkout -b 1.19.0_local v1.19.0
    
    • 1

    命令行编译

    如果不需要调整源码,建议不要用 idea 进行编译,直接通过命令行即可。

    编译准备工作:

    • 仓库选择:由于首次构建需要下载大量的依赖包,为了保证能够顺利构建,不建议使用阿里云镜像仓库,因为阿里云镜像仓库并非与 maven 仓库同步。也可以选择使用阿里云镜像仓库,如果构建出现了依赖下载问题,可以再切回 maven 仓库。

    • 构建时间:下载依赖包耗时长,建议空闲时构建,或者使用空闲电脑构建,首次构建一般需要 12 个小时以上,甚至可能会超过 24 小时。Window 环境编译耗时可能更长,48小时也不足为怪,要做好心理准备。

    • 梯子 : 没有梯子,估计很多依赖都无法下载,视具体网络情况而定。

    • 运气 : 最终编译时间长短取决于运气

    liurui@liurui:~/code$ cd dd-trace-java/
    liurui@liurui:~/code/dd-trace-java$ gradle clean shadowJar
    ....
    
    Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
    
    You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
    
    See https://docs.gradle.org/8.0.2/userguide/command_line_interface.html#sec:command_line_warnings
    
    BUILD SUCCESSFUL in 1m 32s
    1323 actionable tasks: 999 executed, 311 from cache, 13 up-to-date
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    build 成功后,可以在dd-java-agent/build/libs/ 目录下找到刚刚 build 成功的 agent 包。

    idea 编译

    如果需要用 idea 编译,系统内存至少是 16G

    配置 Gradle

    在这里插入图片描述

    编译

    执行 Task shadowJar

    在这里插入图片描述

    参考文档

    CONTRIBUTING

  • 相关阅读:
    【Python+百度API】实现人脸识别和颜值检测系统(包括人脸数量、年龄、颜值评分、性别、种族、表情检测)(超详细 附源码)
    简历考察点1_《基于 VUE2.0 前后端分离的个人博客系统》
    6. 【图的遍历】⼴度优先遍历(BFS)、⼴度优先⽣成树(森林) + 深度优先遍历(DFS)、深度优先⽣成树(森林)
    基于YOLOV4的港口作业人员检测系统研究
    如何快速调整SMT贴片编程中的特殊元件角度?
    Paper Reading: RSPrompter,基于视觉基础模型的遥感实例分割提示学习
    室分知识点整理版
    centos 安装和卸载 webmin
    基于PHP+html的学生课外活动成果统计系统
    〖Python网络爬虫实战㉟〗- 极验验证码的识别
  • 原文地址:https://blog.csdn.net/liurui_wuhan/article/details/132884604