Development#
Working on the connectors themselves, rather than using them in a job. This page covers the toolchain and the build.
| Testing | The three test kinds and how to run each |
| Gated E2E audit | The September 2026 audit inventory, shared repairs and validation boundaries |
| Checks | The repository-specific checkers CI runs, and the skills that answer their failures |
| Contributing | The issue-first process, pull-request expectations, licensing, and design records |
Toolchain#
- JDK 17 or 21. The build targets bytecode 17; Java 11 is not supported — see Supported versions.
- Maven, through the included wrapper
./mvnw. - just as the command entrypoint and
mise to install the tools the recipes need —
mise installin the repository root installs everythingmise.tomlpins. In a shell without mise activated,mise x -- just <recipe>behaves the same. - Python 3.11 or newer, for the repository’s checker scripts that wrap the build. mise installs its pinned 3.12.
- Docker, for the emulator-backed integration tests that run inside the ordinary build.
The justfile is the command index, and CI calls the same recipes, so what runs locally is what
runs there. just --list prints every recipe with a one-line description; this section names
only the handful most changes need, so it stays true when recipes are added.
Building#
The full build — formatting and license checks, unit tests, integration tests, packaging:
just verifyIt needs Docker but no Google Cloud credentials. The recipe is a strict header check followed
by ./mvnw verify, and CI’s build lanes run the same recipe — though CI also runs the
checker suite alongside it, so a green local build
is necessary rather than sufficient. Two narrower forms serve day-to-day work:
just verify-module flink-connector-gcp-bigquery # one module and what it is built on
just verify-flink 1.20.4 # the full build against another Flink versionOne source tree supports Flink 2.x and 1.20 together: the few API differences between the
majors live in per-major source roots (src/main/java-flink1 / src/main/java-flink2)
selected by the flink.compat Maven property, whose comment in the root pom.xml documents
the mechanism. just verify-flink selects the seam along with the version, which is the flag
most easily forgotten in a raw Maven call.
Supported versions states the user-facing contract and
how the weekly build verifies the range.
Run just format before committing — CI fails on unformatted code. Format under a JDK 17:
the inherited build skips Spotless on Java 21 (google-java-format does not run there), so on
a 21-only toolchain both just format and just verify pass with unformatted Java and the
JDK 17 CI lane fails it.
Working in an IDE#
Import the root pom.xml as a Maven project on a JDK 17. Nothing else is required: the
formatter is Spotless, applied by just format and enforced by the JDK 17 build, so an IDE
formatter profile is a convenience rather than a correctness requirement; Checkstyle also runs
in the build, and an IDE plugin can point at its configuration in
tools/maven/checkstyle.xml to surface violations while editing.