From 321842f205f27cda6374ac24afff55601aa378d6 Mon Sep 17 00:00:00 2001 From: slfan1989 Date: Wed, 18 Feb 2026 13:54:26 +0800 Subject: [PATCH] [AURON #2020] [BUILD] Add `--threads` option to control Maven build parallelism. Signed-off-by: slfan1989 --- CONTRIBUTING.md | 1 + auron-build.sh | 22 ++++++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 64f7dbed0..6d8e4d84e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -128,6 +128,7 @@ Run `./auron-build.sh --help` to see all available options, including: - `--celeborn`, `--uniffle`, `--paimon`, `--iceberg`: Optional integrations - `--skiptests`: Skip unit tests (default: true) - `--sparktests`: Run Spark integration tests +- `--threads`: Maven build threads (e.g. 1, 4, 1C). Defaults to single-threaded local builds; Docker defaults to 8 unless overridden. ### Running Tests diff --git a/auron-build.sh b/auron-build.sh index 47e4a5eab..014155ca4 100755 --- a/auron-build.sh +++ b/auron-build.sh @@ -55,6 +55,7 @@ print_help() { echo " --skiptests Skip unit tests (default: true)" echo " --sparktests Run spark tests (default: false)" echo " --docker Build in Docker environment (default: false)" + echo " --threads Maven build threads (e.g. 1, 4, 1C). Default: local unset, docker 8" IFS=','; echo " --image Docker image to use (e.g. ${SUPPORTED_OS_IMAGES[*]}, default: ${SUPPORTED_OS_IMAGES[*]:0:1})"; unset IFS IFS=','; echo " --sparkver Specify Spark version (e.g. ${SUPPORTED_SPARK_VERSIONS[*]})"; unset IFS IFS=','; echo " --flinkver Specify Flink version (e.g. ${SUPPORTED_FLINK_VERSIONS[*]})"; unset IFS @@ -126,6 +127,7 @@ RELEASE_PROFILE=false CLEAN=true SKIP_TESTS=true SPARK_TESTS=false +THREADS="" SPARK_VER="" FLINK_VER="" SCALA_VER="" @@ -158,6 +160,15 @@ while [[ $# -gt 0 ]]; do exit 1 fi ;; + --threads) + if [[ -n "$2" && "$2" != -* ]]; then + THREADS="$2" + shift 2 + else + echo "ERROR: --threads requires a value (e.g. 1, 4, 1C)" >&2 + exit 1 + fi + ;; --image) if [[ -n "$2" && "$2" != -* ]]; then IMAGE_NAME="$2" @@ -396,6 +407,15 @@ if [[ -n "$ICEBERG_VER" ]]; then BUILD_ARGS+=("-Piceberg-$ICEBERG_VER") fi +# Configure Maven build threads: +# - local builds default to Maven's single-threaded behavior +# - docker builds default to -T8 unless overridden +if [[ -n "$THREADS" ]]; then + BUILD_ARGS+=("-T$THREADS") +elif [[ "$USE_DOCKER" == true ]]; then + BUILD_ARGS+=("-T8") +fi + MVN_ARGS=("${CLEAN_ARGS[@]}" "${BUILD_ARGS[@]}") # ----------------------------------------------------------------------------- @@ -470,8 +490,6 @@ fi # ----------------------------------------------------------------------------- if [[ "$USE_DOCKER" == true ]]; then echo "[INFO] Compiling inside Docker container using image: $IMAGE_NAME" - # In Docker mode, use multi-threaded Maven build with -T8 for faster compilation - BUILD_ARGS+=("-T8") if [[ "$CLEAN" == true ]]; then # Clean the host-side directory that is mounted into the Docker container. # This avoids "device or resource busy" errors when running `mvn clean` inside the container.