@@ -36,6 +36,8 @@ MAVEN_DISTRIBUTION_URL="https://repo.maven.apache.org/maven2/org/apache/maven/ap
3636
3737# Maven Plugin Configuration
3838MAVEN_SHADE_PLUGIN_VERSION=" 3.5.1"
39+ ICEBERG_VERSION=" ${ICEBERG_VERSION:- 1.10.0} "
40+ APACHE_SNAPSHOT_REPOSITORY_URL=" https://repository.apache.org/content/repositories/snapshots/"
3941mkdir -p " ${CACHE_DIR} "
4042
4143# Create a temporary directory for our Maven project.
@@ -84,13 +86,46 @@ function setup_maven_wrapper() {
8486 MAVEN_CMD=" ${mvnw_script} "
8587}
8688
89+ function add_beam_dependency() {
90+ local artifact_id=" $1 "
91+ cat >> " ${POM_FILE} " << EOL
92+ <dependency>
93+ <groupId>org.apache.beam</groupId>
94+ <artifactId>${artifact_id} </artifactId>
95+ <version>\$ {beam.version}</version>
96+ </dependency>
97+ EOL
98+ }
99+
100+ function add_dependency() {
101+ local group_id=" $1 "
102+ local artifact_id=" $2 "
103+ local version=" $3 "
104+ cat >> " ${POM_FILE} " << EOL
105+ <dependency>
106+ <groupId>${group_id} </groupId>
107+ <artifactId>${artifact_id} </artifactId>
108+ <version>${version} </version>
109+ </dependency>
110+ EOL
111+ }
112+
113+ function normalize_beam_version() {
114+ case " ${BEAM_VERSION} " in
115+ * -[sS][nN][aA][pP][sS][hH][oO][tT])
116+ BEAM_VERSION=" ${BEAM_VERSION% -* } -SNAPSHOT"
117+ ;;
118+ esac
119+ }
120+
87121function usage() {
88122 echo " Usage: $0 [--version <beam_version>] [--runner <runner_name>] [--io <io_connector>] [--list-versions] [--list-ios] [--list-runners] [--debug] [-h|--help]"
89123 echo " "
90124 echo " A self-contained launcher for the Apache Beam SQL Shell."
91125 echo " "
92126 echo " Options:"
93127 echo " --version Specify the Apache Beam version (default: ${DEFAULT_BEAM_VERSION} )."
128+ echo " SNAPSHOT versions are resolved from Apache's Maven snapshot repository."
94129 echo " --runner Specify the Beam runner to use (default: direct)."
95130 echo " Supported runners:"
96131 echo " direct - DirectRunner (runs locally, good for development)"
@@ -208,7 +243,7 @@ function list_runners() {
208243
209244 echo " ✅ Available runners for Beam ${BEAM_VERSION} :"
210245 echo " "
211-
246+
212247 # Process each runner and provide descriptions
213248 while IFS= read -r runner; do
214249 case " $runner " in
@@ -217,7 +252,7 @@ function list_runners() {
217252 echo " Runs locally on your machine. Good for development and testing."
218253 ;;
219254 " google-cloud-dataflow-java" )
220- echo " dataflow - DataflowRunner"
255+ echo " dataflow - DataflowRunner"
221256 echo " Runs on Google Cloud Dataflow for production workloads."
222257 ;;
223258 flink-* )
@@ -273,7 +308,7 @@ function list_runners() {
273308 ;;
274309 esac
275310 done <<< " $runners"
276-
311+
277312 echo " "
278313 echo " 💡 Usage: ./beam-sql.sh --runner <runner_name>"
279314 echo " Default: direct"
@@ -291,7 +326,7 @@ DEBUG_MODE=false
291326
292327while [[ " $# " -gt 0 ]]; do
293328 case $1 in
294- --version) BEAM_VERSION=" $2 " ; shift ;;
329+ --version) BEAM_VERSION=" $2 " ; normalize_beam_version ; shift ;;
295330 --runner) BEAM_RUNNER=$( echo " $2 " | tr ' [:upper:]' ' [:lower:]' ) ; shift ;;
296331 --io) IO_CONNECTORS+=(" $2 " ); shift ;;
297332 --list-versions) list_versions; exit 0 ;;
@@ -363,7 +398,15 @@ else
363398EOL
364399# Add IO and Runner dependencies
365400 for io in " ${IO_CONNECTORS[@]} " ; do
366- echo " <dependency><groupId>org.apache.beam</groupId><artifactId>beam-sdks-java-io-${io} </artifactId><version>\$ {beam.version}</version></dependency>" >> " ${POM_FILE} "
401+ add_beam_dependency " beam-sdks-java-io-${io} "
402+ case " ${io} " in
403+ iceberg)
404+ add_beam_dependency " beam-sdks-java-extensions-sql-iceberg"
405+ add_dependency " org.apache.iceberg" " iceberg-aws" " ${ICEBERG_VERSION} "
406+ add_dependency " org.apache.iceberg" " iceberg-aws-bundle" " ${ICEBERG_VERSION} "
407+ add_dependency " org.apache.iceberg" " iceberg-gcp" " ${ICEBERG_VERSION} "
408+ ;;
409+ esac
367410 done
368411 RUNNER_ARTIFACT=" "
369412 case " ${BEAM_RUNNER} " in
@@ -372,12 +415,25 @@ EOL
372415 * ) echo " ❌ Error: Unsupported runner '${BEAM_RUNNER} '." >&2 ; exit 1 ;;
373416 esac
374417 if [ -n " ${RUNNER_ARTIFACT} " ]; then
375- echo " <dependency><groupId>org.apache.beam</groupId><artifactId> ${RUNNER_ARTIFACT} </artifactId><version> \$ {beam.version}</version></dependency> " >> " ${POM_FILE }"
418+ add_beam_dependency " ${RUNNER_ARTIFACT }"
376419 fi
377420
378421# Complete the POM with the build section for the maven-shade-plugin
379422cat >> " ${POM_FILE} " << EOL
380423 </dependencies>
424+ <repositories>
425+ <repository>
426+ <id>apache.snapshots</id>
427+ <url>${APACHE_SNAPSHOT_REPOSITORY_URL} </url>
428+ <releases>
429+ <enabled>false</enabled>
430+ </releases>
431+ <snapshots>
432+ <enabled>true</enabled>
433+ <updatePolicy>always</updatePolicy>
434+ </snapshots>
435+ </repository>
436+ </repositories>
381437 <properties>
382438 <beam.version>${BEAM_VERSION} </beam.version>
383439 </properties>
@@ -395,6 +451,11 @@ cat >> "${POM_FILE}" << EOL
395451 </goals>
396452 <configuration>
397453 <transformers>
454+ <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
455+ <manifestEntries>
456+ <Multi-Release>true</Multi-Release>
457+ </manifestEntries>
458+ </transformer>
398459 <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
399460 </transformers>
400461 <filters>
0 commit comments