我有一个批处理文件,一个接一个地执行三个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)中,它们会一个接一个地执行,没有任何问题。所以这显然是dos批处理文件的一些问题。
答案 0 :(得分:264)
Maven使用批处理文件来开展业务。对于任何批处理脚本,必须使用call
命令调用另一个脚本,以便在调用的脚本完成后它知道返回到脚本。尝试将call
添加到所有命令中。
您可以尝试的另一件事是使用start
命令,该命令应该起作用。
答案 1 :(得分:19)
让call
有所帮助。但是今天它没有。
这就是我解决它的方法:
蝙蝠文件内容(如果您想在
cmd1 && ^
cmd2 && ^
cmd3 && ^
cmd4
蝙蝠文件内容(如果您希望继续批处理其中一个cmds错误)
cmd1 & ^
cmd2 & ^
cmd3 & ^
cmd4
答案 2 :(得分:6)
要从一个脚本执行更多Maven构建,您应按以下方式使用Windows 调用功能:
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
答案 3 :(得分:1)
应该是特定的mvn
命令exec
并且不返回,因此不执行其余的命令。
答案 4 :(得分:0)
尝试编写以下批处理文件并执行它:
Echo one
cmd
Echo two
cmd
Echo three
cmd
只有前两行被执行。但是,如果在命令提示符下键入“exit”,则会处理接下来的两行。这是一个装载另一个的shell。
为了确保这不是您的脚本中发生的事情,只需在第一个命令结束时键入“exit”。
HTH!
答案 5 :(得分:0)
仅当我在命令/ DOS窗口中键入EXIT时,批处理文件中的命令才运行。从批处理文件中删除CMD时,此问题已解决。不用了。