{ stdenv, maven, pkgs }: { mavenDeps, src, name, meta, m2Path, skipTests ? true, ... }: with builtins; with stdenv.lib; let mavenMinimal = import ./maven-minimal.nix { inherit pkgs stdenv maven; }; in stdenv.mkDerivation rec { inherit mavenDeps src name meta m2Path; flatDeps = unique (flatten (mavenDeps ++ mavenMinimal.mavenMinimal)); propagatedBuildInput = [ maven ] ++ flatDeps; find = ''find ${foldl' (x: y: x + " " + y) "" (map (x: x + "/m2/") flatDeps)} -type d -printf '%P\n' | xargs -I {} mkdir -p $out/m2/{}''; copy = ''cp -rs ${foldl' (x: y: x + " " + y) "" (map (x: x + "/m2/*") flatDeps)} $out/m2''; phases = [ "unpackPhase" "buildPhase" ]; buildPhase = '' mkdir -p $out/target mkdir -p $out/m2/${m2Path} ${optionalString (length flatDeps > 0) find} ${optionalString (length flatDeps > 0) copy} echo "\ tmpm2file://$out/m2*\ $out/m2" >> $out/m2/settings.xml ${maven}/bin/mvn clean package -Dmaven.test.skip=${if skipTests then "true" else "false"} -Danimal.sniffer.skip=true -gs $out/m2/settings.xml cp -v ./target/*.jar $out/target/ ''; }