蝙蝠脚本意外退出
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 现在。以上是关于蝙蝠脚本意外退出的主要内容,如果未能解决你的问题,请参考以下文章
通过 Google 表格解析时出现“JavaScript 运行时意外退出”错误
macos苹果系统Clion意外退出和macos苹果系统JetBrains系列软件意外退出问题解决
macos苹果系统Clion意外退出和macos苹果系统JetBrains系列软件意外退出问题解决