蝙蝠脚本意外退出

Posted

技术标签:

【中文标题】蝙蝠脚本意外退出【英文标题】:Bat script exits unexpectedly 【发布时间】:2012-07-04 10:47:41 【问题描述】:

我有以下 bat 脚本:

@echo off
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_32
set JRE_HOME=C:\Program Files\Java\jdk1.6.0_32\jre
set Path=%JAVA_HOME%\bin;%Path%

cd C:\project
mvn validate compile package db-migration:migrate -DskipTests
REM script exits here, the second line never been executed
java  -jar target/compiled_tar.jar

最后一行从未被执行。 "mvn..." 成功完成,compiled_tar.jar 创建完成,输出为:

[INFO] BUILD SUCCESS

如果我在最后一行和上一行之间插入 PAUSE 命令,那么 PAUSE 也永远不会发生。为什么?

【问题讨论】:

mvn 可能正在退出整个过程。我过去在一些 ant 指令上遇到过同样的问题,希望也能找到解决方案。 可以做mvn … && true 我认为 cmd 可能没有真正的命令看到必须替换为echo. (几乎相同,但打印一个空行)。这样做的问题是你不知道是否有错误。 mvn的错误代码是什么? 见***.com/a/1385644/537980 Why does only the first line of this Windows batch file execute but all three lines execute in a command shell? 的可能副本 - 它甚至是同一个 BAT 文件,“mvn”。 【参考方案1】:

使用这个 Maven 命令 (set maven_batch_pause=on) 可以完美解决这个问题:

@echo off

set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_32
set JRE_HOME=C:\Program Files\Java\jdk1.6.0_32\jre
set Path=%JAVA_HOME%\bin;%Path%

set maven_batch_pause=on
cd C:\project
mvn validate compile package db-migration:migrate -DskipTests

REM The script exits here, and the second line will never be executed
java  -jar target/compiled_tar.jar

【讨论】:

【参考方案2】:

mvn 本身是一个.bat 文件,因此(为了与 MS-DOS 1.0 兼容)Windows 将停止执行您的批处理文件。要解决此问题,请使用call 命令:

call mvn validate compile package db-migration:migrate -DskipTests

【讨论】:

你改变了我的生活。谢谢! 这一年是 2013 年,我不得不关心 32 年前的 MS-DOS 1.0 是如何运行的。我不知道我该伤心还是感动。 @ChrisNielsen 2019 现在。

以上是关于蝙蝠脚本意外退出的主要内容,如果未能解决你的问题,请参考以下文章

node.js:程序要么意外退出,要么只是挂起

通过 Google 表格解析时出现“JavaScript 运行时意外退出”错误

macos苹果系统Clion意外退出和macos苹果系统JetBrains系列软件意外退出问题解决

macos苹果系统Clion意外退出和macos苹果系统JetBrains系列软件意外退出问题解决

颤振——哎呀;颤振意外退出:“FileSystemException:删除失败,路径='...\.ios')

语法错误:“(”意外(预期“然后”)