为什么只有这个Windowsbatch file的第一行执行,但所有三行都在命令行中执行?
我有一个batch file,一个接一个地执行三个Maven命令。 每个命令都可以在脚本中成功执行 – 本身! 但是,当我将所有三个命令添加到同一个文件时,只有第一个命令在脚本退出之前执行。 任何想法为什么?
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
另外,如果我复制所有这三个命令并将它们粘贴到一个命令shell(cmd.exe)中,它们将一个接一个地执行而没有任何问题。 所以这显然是DOSbatch file的一些问题。
Maven使用batch file来完成其业务。 对于任何批处理脚本,必须使用call
命令调用另一个脚本,以便知道在被调用的脚本完成之后返回到脚本。 尝试预先call
所有命令。
你可以尝试的另一件事是使用start
命令应该类似的工作。
有call
帮助
但今天它din't
这是我解决的方法:
蝙蝠文件内容 (如果你想停止批处理时cmds错误之一)
cmd1 && ^ cmd2 && ^ cmd3 && ^ cmd4 && ^
bat文件内容 (如果你想继续 cmd错误之一的批处理)
cmd1 & ^ cmd2 & ^ cmd3 & ^ cmd4 & ^
要从一个脚本执行更多的Maven构build,您应该使用以下方式的Windows 调用function:
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
应该是特定的mvn
命令exec
并不返回,从而不执行其余的命令。
尝试编写下面的batch file并执行它:
Echo one cmd Echo two cmd Echo three cmd
只有前两行被执行。 但是,如果在命令提示符下input“exit”,则会处理接下来的两行。 这是一个装载另一个的shell。
要确定这不是脚本中发生的事情,只要在第一个命令结束时input“exit”即可。
HTH!