wake-up-neo.com

Warum wird nur die erste Zeile dieser Windows-Batchdatei ausgeführt, aber alle drei Zeilen werden in einer Befehlsshell ausgeführt?

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.

161
wiki

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.

273
Jeff Mercado

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
21

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 execs und nicht zurückgibt, wodurch der Rest der Befehle nicht ausgeführt wird.

1

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!

0
Dr. belisarius