From 8dd8ad7827b7dd26d334f72a6be28fd8fc117da8 Mon Sep 17 00:00:00 2001 From: Abdel Ghanem Date: Mon, 13 Jul 2026 16:41:01 -0300 Subject: [PATCH 1/3] MNG-7884: Add --print-build-order CLI option (parsing only, not yet wired to request) --- .../org/apache/maven/api/cli/mvn/MavenOptions.java | 7 +++++++ .../cling/invoker/mvn/CommonsCliMavenOptions.java | 13 +++++++++++++ .../cling/invoker/mvn/LayeredMavenOptions.java | 5 +++++ 3 files changed, 25 insertions(+) diff --git a/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvn/MavenOptions.java b/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvn/MavenOptions.java index a77ea4ebb7e0..57a262f5e4a4 100644 --- a/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvn/MavenOptions.java +++ b/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvn/MavenOptions.java @@ -102,6 +102,13 @@ public interface MavenOptions extends Options { @Nonnull Optional failFast(); + /** + * Requests that Maven print the reactor build order and exit, without executing the build. + * + * @return {@code true} if the reactor build order should be printed and the build skipped. + */ + Optional printBuildOrder(); + /** * Indicates whether Maven should run all builds but defer error reporting to the end. * diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/CommonsCliMavenOptions.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/CommonsCliMavenOptions.java index 233e22f15e76..64128a74e4ca 100644 --- a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/CommonsCliMavenOptions.java +++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/CommonsCliMavenOptions.java @@ -102,6 +102,14 @@ public Optional failFast() { return Optional.empty(); } + @Override + public Optional printBuildOrder() { + if (commandLine.hasOption(CLIManager.PRINT_BUILD_ORDER)) { + return Optional.of(Boolean.TRUE); + } + return Optional.empty(); + } + @Override public Optional failAtEnd() { if (commandLine.hasOption(CLIManager.FAIL_AT_END)) { @@ -238,6 +246,7 @@ protected static class CLIManager extends CommonsCliOptions.CLIManager { public static final String CHECKSUM_FAILURE_POLICY = "C"; public static final String CHECKSUM_WARNING_POLICY = "c"; public static final String FAIL_FAST = "ff"; + public static final String PRINT_BUILD_ORDER = "pbo"; public static final String FAIL_AT_END = "fae"; public static final String FAIL_NEVER = "fn"; public static final String RESUME = "r"; @@ -360,6 +369,10 @@ protected void prepareOptions(org.apache.commons.cli.Options options) { .desc( "If set, Maven will load command line options from the specified file and merge with CLI specified ones.") .get()); + options.addOption(Option.builder(PRINT_BUILD_ORDER) + .longOpt("print-build-order") + .desc("Print the reactor build order and exit without building") + .get()); } } } diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/LayeredMavenOptions.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/LayeredMavenOptions.java index a4ad7f5e41d1..17ed61a9bb33 100644 --- a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/LayeredMavenOptions.java +++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/LayeredMavenOptions.java @@ -89,6 +89,11 @@ public Optional failFast() { return returnFirstPresentOrEmpty(MavenOptions::failFast); } + @Override + public Optional printBuildOrder() { + return returnFirstPresentOrEmpty(MavenOptions::printBuildOrder); + } + @Override public Optional failAtEnd() { return returnFirstPresentOrEmpty(MavenOptions::failAtEnd); From 4f7649fbb87c1458f4902171d8d48556c1771798 Mon Sep 17 00:00:00 2001 From: AbdelHamdyGhanem Date: Mon, 13 Jul 2026 17:42:12 -0300 Subject: [PATCH 2/3] Update MavenOptions.java --- .../src/main/java/org/apache/maven/api/cli/mvn/MavenOptions.java | 1 + 1 file changed, 1 insertion(+) diff --git a/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvn/MavenOptions.java b/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvn/MavenOptions.java index 57a262f5e4a4..f9ac5615dcfe 100644 --- a/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvn/MavenOptions.java +++ b/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvn/MavenOptions.java @@ -107,6 +107,7 @@ public interface MavenOptions extends Options { * * @return {@code true} if the reactor build order should be printed and the build skipped. */ + @Nonnull Optional printBuildOrder(); /** From b28ea7baf38d0b91c7851904bc4124be9a8910b9 Mon Sep 17 00:00:00 2001 From: AbdelHamdyGhanem Date: Mon, 13 Jul 2026 17:43:09 -0300 Subject: [PATCH 3/3] Update MavenOptions.java --- .../main/java/org/apache/maven/api/cli/mvn/MavenOptions.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvn/MavenOptions.java b/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvn/MavenOptions.java index f9ac5615dcfe..2caa69fca3bb 100644 --- a/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvn/MavenOptions.java +++ b/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvn/MavenOptions.java @@ -105,7 +105,8 @@ public interface MavenOptions extends Options { /** * Requests that Maven print the reactor build order and exit, without executing the build. * - * @return {@code true} if the reactor build order should be printed and the build skipped. + * @return an {@link Optional} containing true if the reactor build order should be printed + * and the build skipped, false if not, or empty if not specified. */ @Nonnull Optional printBuildOrder();