ワンクリックで
gradle-build
// Guides understanding and using the Gradle build system in Apache Beam. Use when building projects, understanding dependencies, or troubleshooting build issues.
// Guides understanding and using the Gradle build system in Apache Beam. Use when building projects, understanding dependencies, or troubleshooting build issues.
Guides YAML SDK development in Apache Beam, including environment setup, testing, and key concepts. Use when working with Beam YAML code in sdks/python/apache_beam/yaml/.
Guide on how to add and propagate new metadata fields in Apache Beam's WindowedValue, extending protos, windmill persistence, and runner interfaces to avoid metadata loss.
Guides understanding and working with Apache Beam runners (Direct, Dataflow, Flink, Spark, etc.). Use when configuring pipelines for different execution environments or debugging runner-specific issues.
Rewrite Apache Beam DoFn methods (@ProcessElement, @OnTimer, @OnWindowExpiration) to remove legacy ProcessContext or OnTimerContext usage. Use this skill when you encounter DoFn methods that use context.element(), context.output(), etc., and need to modernize them using parameter injection (@Element, @Timestamp, @Pane, OutputReceiver, MultiOutputReceiver).
Guides Python SDK development in Apache Beam, including environment setup, testing, building, and running pipelines. Use when working with Python code in sdks/python/.
Explains core Apache Beam programming model concepts including PCollections, PTransforms, Pipelines, and Runners. Use when learning Beam fundamentals or explaining pipeline concepts.
| name | gradle-build |
| description | Guides understanding and using the Gradle build system in Apache Beam. Use when building projects, understanding dependencies, or troubleshooting build issues. |
Apache Beam is a mono-repo using Gradle as its build system. The entire project (Java, Python, Go, website) is managed as a single Gradle project.
build.gradle.kts - Root build configurationsettings.gradle.kts - Project structure and module definitionsgradle.properties - Global properties and versionsbuildSrc/ - Custom Gradle plugins including BeamModulePluginLocated at buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
apply plugin: 'org.apache.beam.module'
applyJavaNature(
automaticModuleName: 'org.apache.beam.sdk.io.kafka'
)
# Build entire project
./gradlew build
# Build specific project
./gradlew :sdks:java:core:build
./gradlew -p sdks/java/core build
# Compile only (no tests)
./gradlew :sdks:java:core:compileJava
# Run tests
./gradlew :sdks:java:core:test
# Run specific test
./gradlew :sdks:java:core:test --tests *MyTest
# Skip tests
./gradlew build -x test
# Clean specific project
./gradlew :sdks:java:core:clean
# Clean everything
./gradlew clean
# Java formatting (Spotless)
./gradlew spotlessApply
# Check formatting
./gradlew spotlessCheck
# Format CHANGES.md
./gradlew formatChanges
# Publish to Maven Local
./gradlew -Ppublishing :sdks:java:core:publishToMavenLocal
# Publish all Java artifacts
./gradlew -Ppublishing publishToMavenLocal
./gradlew javaPreCommit
./gradlew pythonPreCommit
./gradlew :checkSetup # Validates Go, Java, Python environments
| Flag | Description |
|---|---|
-p <path> | Run task in specific project directory |
-x <task> | Exclude task |
--tests <pattern> | Filter tests |
-Ppublishing | Enable publishing tasks |
-PdisableSpotlessCheck=true | Disable formatting check |
-PdisableCheckStyle=true | Disable checkstyle |
-PskipCheckerFramework | Skip Checker Framework |
--continue | Continue after failures |
--info | Verbose output |
--debug | Debug output |
--scan | Generate build scan |
--parallel | Parallel execution |
-PgcpProject=my-project
-PgcpRegion=us-central1
-PgcpTempRoot=gs://bucket/temp
-PgcsTempRoot=gs://bucket/temp
# Build Java SDK container
./gradlew :sdks:java:container:java11:docker
# Build Python SDK container
./gradlew :sdks:python:container:py312:docker
# Build and push a container into a custom repository
./gradlew :sdks:java:container:java11:docker \
-Pdocker-repository-root=gcr.io/project \
-Pdocker-tag=custom \
-Ppush-containers
If a :docker task produces logs that contain the following:
WARNING: No output specified with docker-container driver.
Build result will only remain in the build cache.
then you must use -PuseDockerBuildx when running :docker tasks
in this environment. For example:
# Build and push a go container into a custom repository
./gradlew :sdks:go:container:docker \
-Pdocker-repository-root=gcr.io/project \
-Pdocker-tag=custom \
-Ppush-containers \
-PuseDockerBuildx
./gradlew :sdks:java:core:dependencies
./gradlew :sdks:java:core:dependencies --configuration runtimeClasspath
In build.gradle:
configurations.all {
resolutionStrategy.force 'com.google.guava:guava:32.0.0-jre'
}
rm -rf ~/.gradle/caches
rm -rf .gradle
rm -rf build
./gradlew clean./gradlew generateProtos./gradlew dependencies--scan for detailed analysis# List all tasks
./gradlew tasks
# List tasks for a project
./gradlew :sdks:java:core:tasks
# Show project structure
./gradlew projects
Install Gradle extension for task discovery