diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index ceb9aa8..1eafbc7 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -69,3 +69,25 @@ jobs:
with:
name: test-results
path: build/test-results/test/
+
+ examples:
+ name: Compile Examples
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v7
+
+ - name: Set up JDK 21
+ uses: actions/setup-java@v6
+ with:
+ java-version: '21'
+ distribution: 'temurin'
+
+ - name: Setup Gradle
+ uses: gradle/actions/setup-gradle@v5
+
+ - name: Publish SDK to local Maven repository
+ run: ./gradlew publishToMavenLocal -PreleaseVersion=0.0.0-local
+
+ - name: Compile examples against local SDK
+ run: mvn -B -f examples/pom.xml compile -Dpubsub-sdk.version=0.0.0-local
diff --git a/README.md b/README.md
index d8bb649..f8d20bf 100644
--- a/README.md
+++ b/README.md
@@ -131,7 +131,14 @@ Standalone example programs demonstrating common patterns are in [`examples/`](e
- `PurgeExample.java` — topic purging
- `RetryExample.java` — custom retry configuration
-The examples depend on the published SDK version set in `examples/pom.xml` (`pubsub-sdk.version`). To run them against your local checkout instead:
+The examples depend on the published SDK version set in `examples/pom.xml` (`pubsub-sdk.version`). Run one by passing its main class:
+
+```sh
+cd examples
+mvn compile exec:java -Dexec.mainClass=cloud.stackit.pubsub.examples.BasicExample
+```
+
+To run them against your local checkout instead:
```sh
./gradlew publishToMavenLocal -PreleaseVersion=0.0.0-local
diff --git a/examples/pom.xml b/examples/pom.xml
index d74ea8a..4de4e2a 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -60,9 +60,6 @@
org.codehaus.mojo
exec-maven-plugin
3.4.1
-
- cloud.stackit.pubsub.examples.Examples
-