From 4d8e0c9c7abd677916598ab628ee4813a582365a Mon Sep 17 00:00:00 2001 From: Sean Gilligan Date: Thu, 28 May 2026 16:11:35 -0700 Subject: [PATCH] maven: add mvnGoal and mvnOffline parameters to buildMavenPackage mvnGoal allows overriding the main Maven goal used in the derivation. mvnOffline allows defaults to `true`, but allows the offline (`-o`) argument to `mvn` to be removed for special cases (e.g. `deploy` goal) where we will just rely on the Nix sandbox enforcing offline operation. --- pkgs/by-name/ma/maven/build-maven-package.nix | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/ma/maven/build-maven-package.nix b/pkgs/by-name/ma/maven/build-maven-package.nix index f737507ddb73..afa25872e976 100644 --- a/pkgs/by-name/ma/maven/build-maven-package.nix +++ b/pkgs/by-name/ma/maven/build-maven-package.nix @@ -20,6 +20,15 @@ let version, mvnJdk ? jdk, mvnHash ? "", + /** + Maven goal to execute. Normally the the default should be used, but some special cases need other goals. + */ + mvnGoal ? "package", + /** + Set the Maven offline argument, `-o`. Normally the default is preferred, but to call `mvn deploy` with + a directory destination `-o` must be removed. In that case we rely on the Nix sandbox to keep things hermetic. + */ + mvnOffline ? true, mvnFetchExtraArgs ? { }, mvnDepsParameters ? "", manualMvnArtifacts ? [ ], @@ -143,7 +152,9 @@ let mvnDeps=$(cp -dpR ${fetchedMavenDeps}/.m2 ./ && chmod +w -R .m2 && pwd) runHook afterDepsSetup - mvn package -o -nsu "-Dmaven.repo.local=$mvnDeps/.m2" ${mvnSkipTests} ${mvnParameters} + mvn ${mvnGoal} ${ + if mvnOffline then "-o" else "" + } -nsu "-Dmaven.repo.local=$mvnDeps/.m2" ${mvnSkipTests} ${mvnParameters} runHook postBuild '';