用途:Apache Beam 是使用 Gradle 的单体仓库,Java、Python、Go 与网站均作为单一 Gradle 项目管理。本技能用于理解和使用该构建系统,适合构建项目、理解依赖关系或排查构建问题。
关键文件:build.gradle.kts 为根构建配置,settings.gradle.kts 定义项目结构与模块,gradle.properties 保存全局属性与版本,buildSrc/ 存放自定义 Gradle 插件,包括 BeamModulePlugin(位于 buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy),用于集中管理 Java 依赖、配置项目类型(Java、Python、Go、Proto、Docker 等)并定义通用自定义任务。
常用命令:构建整个项目用 ./gradlew build,构建指定项目用 ./gradlew :sdks:java:core:build 或 ./gradlew -p sdks/java/core build,仅编译用 ./gradlew :sdks:java:core:compileJava。测试用 ./gradlew :sdks:java:core:test,指定测试用 --tests *MyTest,跳过测试用 -x test。清理用 ./gradlew :sdks:java:core:clean 或 ./gradlew clean。格式化用 ./gradlew spotlessApply、spotlessCheck、formatChanges。发布到 Maven Local 用 ./gradlew -Ppublishing :sdks:java:core:publishToMavenLocal。预提交任务有 javaPreCommit、pythonPreCommit,:checkSetup 可校验 Go、Java、Python 环境。
常用标志:-p 指定项目目录,-x 排除任务,--tests 过滤测试,-Ppublishing 启用发布,-PdisableSpotlessCheck=true、-PdisableCheckStyle=true、-PskipCheckerFramework 可跳过相应检查,--continue、--info、--debug、--scan、--parallel 分别用于失败继续、详细输出、调试、构建扫描与并行执行。GCP 相关属性包括 -PgcpProject、-PgcpRegion、-PgcpTempRoot、-PgcsTempRoot。
Docker 任务:可构建 Java 与 Python SDK 容器,并通过 -Pdocker-repository-root、-Pdocker-tag、-Ppush-containers 推送;若日志提示未指定输出,需加 -PuseDockerBuildx。
依赖管理:用 ./gradlew :sdks:java:core:dependencies 查看依赖,可加 --configuration runtimeClasspath;在 build.gradle 中通过 resolutionStrategy.force 强制版本。
排错:可清理 ~/.gradle/caches、.gradle 与 build 目录;NoClassDefFoundError 可先 clean 并删缓存;Proto 错误可运行 ./gradlew generateProtos;依赖冲突可查看 dependencies 或使用 --scan。其他任务包括 tasks、projects。IDE 方面,IntelliJ 以 Gradle 项目打开仓库根目录,VS Code 可安装 Gradle 扩展发现任务。