Ich habe eine Batch-Datei, die drei Maven-Befehle nacheinander ausführt. Jeder Befehl kann erfolgreich im Skript ausgeführt werden - für sich !. Wenn ich jedoch alle drei Befehle zu derselben Datei hinzufüge, wird nur der erste ausgeführt, bevor das Skript beendet wird. Irgendeine Idee warum?
mvn install:install-file -DgroupId=gdata -DartifactId=base -Dversion=1.0 -Dfile=gdata-base-1.0.jar -Dpackaging=jar -DgeneratePom=true
mvn install:install-file -DgroupId=gdata -DartifactId=blogger -Dversion=2.0 -Dfile=gdata-blogger-2.0.jar -Dpackaging=jar -DgeneratePom=true
mvn install:install-file -DgroupId=gdata -DartifactId=blogger-meta -Dversion=2.0 -Dfile=gdata-blogger-meta-2.0.jar -Dpackaging=jar -DgeneratePom=true
Wenn ich alle drei Befehle kopiere und in eine Befehls-Shell (cmd.exe) einfüge, werden sie problemlos nacheinander ausgeführt. Dies ist also anscheinend ein Problem mit der Dos Batch-Datei.
Maven verwendet Batch-Dateien, um seine Geschäfte zu machen. Bei jedem Stapelskript müssen Sie ein anderes Skript mit dem Befehl call
aufrufen, damit es nach Abschluss des aufgerufenen Skripts wieder zu Ihrem Skript zurückkehren kann. Stellen Sie allen Befehlen call
voran.
Sie können auch versuchen, den Befehl start
zu verwenden, der ähnlich funktionieren sollte.
Es hilft, call
zu haben. Jedoch heute hat es nicht getan.
So habe ich es gelöst:
Inhalt der Bat-Datei (wenn Sie stoppen Batch, wenn einer der cmds-Fehler)
cmd1 && ^
cmd2 && ^
cmd3 && ^
cmd4
Inhalt der Bat-Datei (wenn Sie fortfahren möchten Batch, wenn einer der cmds-Fehler auftritt)
cmd1 & ^
cmd2 & ^
cmd3 & ^
cmd4
Um mehrere Maven-Builds aus einem Skript auszuführen, müssen Sie die Windows-Funktion call folgendermaßen verwenden:
call mvn install:install-file -DgroupId=gdata -DartifactId=base -Dversion=1.0 -Dfile=gdata-base-1.0.jar -Dpackaging=jar -DgeneratePom=true
call mvn install:install-file -DgroupId=gdata -DartifactId=blogger -Dversion=2.0 -Dfile=gdata-blogger-2.0.jar -Dpackaging=jar -DgeneratePom=true
call mvn install:install-file -DgroupId=gdata -DartifactId=blogger-meta -Dversion=2.0 -Dfile=gdata-blogger-meta-2.0.jar -Dpackaging=jar -DgeneratePom=true
Es sollte sein, dass der bestimmte mvn
Befehl exec
s und nicht zurückgibt, wodurch der Rest der Befehle nicht ausgeführt wird.
Versuchen Sie, die folgende Batchdatei zu schreiben und auszuführen:
Echo one
cmd
Echo two
cmd
Echo three
cmd
Nur die ersten beiden Zeilen werden ausgeführt. Wenn Sie bei der Eingabeaufforderung "exit" eingeben, werden die nächsten beiden Zeilen verarbeitet. Es ist eine Shell, die eine andere lädt.
Um sicherzugehen, dass dies in Ihrem Skript nicht der Fall ist, geben Sie einfach "exit" ein, wenn der erste Befehl endet.
HTH!