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

news2025/5/25 12:41:45

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

源码下载

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


git clone https://github.com/GuanceCloud/dd-trace-java.git

也可以基于官方的

git clone https://github.com/DataDog/dd-trace-java.git


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

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

git checkout -b 1.19.0_local v1.19.0

命令行编译

如果不需要调整源码,建议不要用 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

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

idea 编译

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

配置 Gradle

在这里插入图片描述

编译

执行 Task shadowJar

在这里插入图片描述

参考文档

CONTRIBUTING

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1010543.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

短视频搭建矩阵源码--短视频矩阵源码搭建

短视频矩阵系统是一种通过将短视频内容进行分类、管理和展示的系统。它可以将用户上传或者选择的短视频按照不同的特定标签进行分类和管理,用户可以根据自己的兴趣和需求选择观看不同类别的短视频。 短视频矩阵源码的开发部署其实并不难,主要依托于抖音平…

springboot集成excel导入导出

1、引入依赖 <dependency><groupId>com.pig4cloud.excel</groupId><artifactId>excel-spring-boot-starter</artifactId><version>1.2.7</version> </dependency> 2、导出 ResponseExcel(name "测试列表") Post…

记录:移动设备软件开发(activity组件)

目录 前言Android简介和发展Android应用的基本组件介绍Activity组件Activity简介Activity的状态和生命周期 小结 前言 移动设备软件开发是指为智能手机、平板电脑等移动设备设计和开发应用程序的过程。移动设备软件开发涉及多种技术、平台和工具&#xff0c;例如Android、iOS、…

R语言CalibrationCurves包绘制带可信区间的校准曲线

校准曲线图表示的是预测值和实际值的差距&#xff0c;作为预测模型的重要部分&#xff0c;目前很多函数能绘制校准曲线。 一般分为两种&#xff0c;一种是通过Hosmer-Lemeshow检验&#xff0c;把P值分为10等分&#xff0c;求出每等分的预测值和实际值的差距。一种是绘制连续的校…

C#: 未能加载文件或程序集“xxx“

导入数据时&#xff0c;发生了异常&#xff0c;错误日志如下&#xff1a; 2023-09-11 09:20:49,304 [125] FATAL [(null)] - NPOI.POIXMLException ---> System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.IO.FileLoadException: 未能加…

OpenCV之GOTURN目标追踪

&#x1f482; 个人主页:风间琉璃&#x1f91f; 版权: 本文由【风间琉璃】原创、在CSDN首发、需要转载请联系博主&#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 目录 前言 一、goturn简介 二、预处理 三、模型加载 四、执行推理 五、解…

干洗店洗鞋店小程序家政保洁带商城一体化系统开发

干洗店洗鞋店小程序家政保洁带商城一体化系统开发&#xff1b; 一、核心功能介绍 1.(支持上门取送、送货到店、寄存网点、智能衣柜四种下单方式) 用户下单-上门取货拍照-送达门店工厂-入厂拍照-清洗完成拍照-上挂物品柜-物品送回 2.骑手端(接单上门、取货拍照&#xff0c;入库拍…

Can‘t load the model for ‘stabilityai/sd-vae-ft-mse‘

Can’t load the model for ‘stabilityai/sd-vae-ft-mse’. If you were trying to load it from ‘https://huggingface.co/models’, make sure you don’t have a local directory with the same name. Otherwise, make sure ‘stabilityai/sd-vae-ft-mse’ is the correct…

亚马逊两款毛绒玩具被紧急召回,毛绒玩具CPC认证办理(红色熊猫毛绒玩具和绿头鸭毛绒玩具)

近日&#xff0c;爱尔兰竞争和消费者保护委员会&#xff08;CCPC&#xff09;对在亚马逊上热卖的两款儿童毛绒玩具实施了召回&#xff0c;原因是存在窒息风险。 Wild Republic红色熊猫毛绒玩具 CCPC在公告中称&#xff1a;“在使用时&#xff0c;熊猫上的小部件&#xff08;眼…

第20章_瑞萨MCU零基础入门系列教程之DAC输出模拟信号

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id728461040949 配套资料获取&#xff1a;https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总&#xff1a; ht…

算法分析与设计编程题 递归与分治策略

棋盘覆盖 题目描述 解题代码 // para: 棋盘&#xff0c;行偏移&#xff0c;列偏移&#xff0c;特殊行&#xff0c;特殊列 void dividedCovering(vector<vector<int>>& chessBoard, int dr, int dc, int sr, int sc, int size) {if (size 1) return;size / 2…

vueshowpdf 移动端pdf文件预览

1、安装 npm install vueshowpdf -S2、参数 属性说明类型默认值v-model是否显示pdf--pdfurlpdf的文件地址String- scale 默认放大倍数 Number1.2 minscale 最小放大倍数 Number0.8 maxscale 最大放大倍数 Number2 3、事件 名称说明回调参数closepdf pdf关闭事件-pdferr文…

图的基本知识

图 一、图的定义和基本术语二、图的存储结构&#xff08;1&#xff09;数组&#xff08;邻接矩阵表示法&#xff09;&#xff08;2&#xff09;数组&#xff08;邻接矩阵&#xff09;的实现&#xff08;3&#xff09;邻接表&#xff08;链式表示法&#xff09;&#xff08;4&am…

6、如何将 Flink 中的数据写入到外部系统(文件、MySQL、Kafka)

目录 1、如何查询官网 2、Flink数据写入到文件 3、Flink数据写入到Kafka 4、Flink数据写入到MySQL 1、如何查询官网 官网链接&#xff1a;官网 2、Flink数据写入到文件 传送门&#xff1a;Flink数据写入到文件 3、Flink数据写入到Kafka 传送门&#xff1a;Flink数据写入…

2023-9-14 最长公共子序列

题目链接&#xff1a;最长公共子序列 #include <iostream> #include <algorithm>using namespace std;const int N 1010;int n, m; char a[N], b[N]; int f[N][N];int main() {cin >> n >> m;cin >> a 1 >> b 1;for(int i 1; i < n…

30WSIP网络音柱

SV-7042VP 30WSIP网络音柱 一、描述 SV-7042VP是我司的一款SIP网络音柱&#xff0c;具有10/100M以太网接口&#xff0c;将网络音源通过自带的功放和喇叭输出播放&#xff0c;可达到功率30W。SV-7042VP作为SIP系统的播放终端&#xff0c;可用于需要广播播放的场所&#xff0c;…

用node开发微信群聊机器人第③章

▍PART 序 怎么https请求第三方api 有哪些免费的、付费的第三方api 记得先去看前几章&#xff0c;看明白了再来看本章&#xff0c;不然你会一脸懵。点合集》#程序员干货 记得先把小程序加个收藏不然等下你要调试的时候找不到》“程序员实用资源” ▍PART 正文 来&#xff…

NeuroFlash:AI文章写作与生成工具

【产品介绍 ​ 】 名称 NeuroFlash 上线时间 2015 具体描述 Neuroflash是一款基于人工智能的文本和图像生成器&#xff0c;可以帮助用户快速创建高质量的内容。Neuroflash拥有超过100种短文和长文的文本类型&#xff0c;涵盖了各种营销场景和需求。只需要输入简单的指示&#…

定时任务框架-xxljob

1.定时任务 spring传统的定时任务Scheduled&#xff0c;但是这样存在这一些问题 &#xff1a; 做集群任务的重复执行问题 cron表达式定义在代码之中&#xff0c;修改不方便 定时任务失败了&#xff0c;无法重试也没有统计 如果任务量过大&#xff0c;不能有效的分片执行 …

stackqueuepriority_queue

目录 一、容器适配器 二、deque 1、deque的相关函数 2、关于deque 3、deque的底层实现 4、deque的设计缺陷 5、结论 三、stack 1、stack的相关函数 2、stack相关函数使用 3、stack模拟实现 四、queue 1、queue的相关函数 2、queue相关函数使用 3、queue的模拟实…