[AURON #2460] Add --mvn, --goal and -- passthrough to auron-build.sh - #2462
[AURON #2460] Add --mvn, --goal and -- passthrough to auron-build.sh#2462ShreyeshArangath wants to merge 2 commits into
Conversation
…ld.sh auron-build.sh always builds through build/mvn, which downloads Maven and so fails in an offline or airgapped build, always runs the install goal, and cannot forward Maven options other than -D. That makes it hard to call from a wrapper script. Add --mvn to build with an already installed Maven, accepting either a path or a command on PATH. Add --goal, defaulting to install so existing callers are unaffected, so a caller can run package and leave the local repository alone. Accept -- as an end-of-options marker so options such as -P, -B and --no-transfer-progress reach Maven, alongside the existing -D handling from apache#2227.
slfan1989
left a comment
There was a problem hiding this comment.
Thanks for the contribution! The overall approach looks good, but --mvn does not yet fully bypass the Maven wrapper, and passthrough arguments are dropped in Docker mode. Please see my inline comments.
There was a problem hiding this comment.
--mvn is intended to bypass build/mvn for offline or air-gapped builds, but project-version resolution still invokes ./build/mvn directly. Please use "$MVN_CMD" here as well; otherwise this step may still trigger the wrapper’s download path and fail offline.
There was a problem hiding this comment.
The passthrough arguments remaining in "$@" are only forwarded by the local Maven invocation. Docker mode exports BUILD_ARGS alone, so arguments after -- are silently dropped. Please forward the passthrough arguments into the container as well, while preserving argument boundaries, or explicitly reject/document passthrough as unsupported in Docker mode.
…n, forward passthrough args in Docker Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Addressed! Thanks for the review, @slfan1989! |
What changes were proposed in this pull request?
Fixes #2460.
Three small additions that make
auron-build.shusable as a build step inside another script, and on machines without network access:--mvn <PATH>builds with an already installed Maven instead ofbuild/mvn, which downloads Maven and so fails in an offline or airgapped build. It accepts either a path or a command onPATH, and errors if it resolves to neither.--goal <GOAL>sets the Maven goal. It defaults toinstall, so nothing changes for existing callers, but a caller that only wants artifacts can runpackageand leave the local repository alone.--ends option parsing, so everything after it reaches Maven unchanged. auron-build.sh fails to parse options after -D arguments #2227 fixed-Dhandling viaMVN_D_ARGS, but-P,-Band long options such as--no-transfer-progressare still either swallowed by thebreakin the-*handler or rejected as an unknown option. The--arm sits alongside the existing-Dhandling rather than replacing it, and is placed before the--*arm so it is not caught as an unknown option.This is independent of #2461 and the two can merge in either order.
How was this patch tested?
Manually, with a stub Maven that echoes its arguments so the composed command line is visible.
All three together:
The goal is
packagerather thaninstall, and-P,-Band the long option all arrive intact.Also checked:
--goalthe command line still saysclean install, so existing callers are unaffected.-DskipBuildNativeplaced among the options still lands inMVN_D_ARGSas before, so auron-build.sh fails to parse options after -D arguments #2227 behaviour is preserved.--mvnresolves a bare command name offPATHas well as an explicit path.--mvn /nope/mvnexits 1 withERROR: --mvn '/nope/mvn' is not an executable or a command on PATH.--goalwith no argument exits 1 with a message naming the expected values.--bogusis still rejected, so the new--arm does not weaken that check.