用途:构建 SkyWalking Java Agent 项目,根据需求执行完整构建、跳测试构建、单模块构建或插件 E2E 测试。
前置条件:编译需 JDK 17、21 或 25(JDK 8 可运行但编译需 17+);Maven 以 ./mvnw 提供;协议定义需初始化 Git 子模块。先执行 java -version 检查版本,未初始化子模块时运行 git submodule init && git submodule update。
主要命令:完整构建 ./mvnw clean package -Pall;跳测试构建(开发推荐)./mvnw clean package -Dmaven.test.skip=true;CI 构建 ./mvnw clean verify install javadoc:javadoc -Dmaven.test.skip=true;单插件模块 ./mvnw clean package -pl apm-sniffer/apm-sdk-plugin/{plugin-name} -am -Dmaven.test.skip=true;仅检查风格 ./mvnw checkstyle:check;单模块测试 ./mvnw test -pl apm-sniffer/apm-sdk-plugin/{plugin-name}。完整构建后 Agent 位于 skywalking-agent/ 目录。生成 protobuf 源码:./mvnw compile -Dmaven.test.skip=true,并在 IDE 中标记生成目录。
插件 E2E:分两阶段。阶段一构建 Agent、测试工具与 Docker 镜像(先 JDK 17+ 构建 Agent,再切换 JDK 8 构建 test/plugin/pom.xml);阶段二用 JDK 8 运行 bash ./test/plugin/run.sh --debug {scenario-name},不加 -f 以复用已构建的工具和镜像。
限制与注意:场景需串行运行以免 Docker 端口冲突;测试失败可对比 actualData.yaml 与 expectedData.yaml 并查看 logs/;startup script not exists 多因 Maven 静默失败,可手动带详细输出重跑;依赖镜像建议预先 docker pull;run.sh -f 会重新克隆并构建测试工具,网络不佳时易失败;JDK 25 下 runner-helper 的 Lombok 不兼容,测试工具建议用 JDK 8 或 17。