2012-07-03 136 views
3

我有以下蝙蝠腳本:蝙蝠腳本意外退出

@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也從來沒有發生在去年和以往線之間的暫停指令。爲什麼?

+0

mvn可能正在退出整個過程。我過去也遇到過一些ant指令的問題,希望能夠看到一個解決方案。 – TheZ

+0

可以做'mvn ... && true'我認爲cmd可能沒有真正的命令,看到必須用'echo.'替換(幾乎相同,但是打印出空行)。這個問題是你不知道是否有錯誤。什麼是mvn的錯誤代碼? –

+0

見http://stackoverflow.com/a/1385644/537980 –

回答

9

mvn本身是一個.bat文件,因此(爲了與MS-DOS 1.0兼容)Windows將停止執行您的批處理文件。爲了解決這個問題,可以使用call命令:

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

你改變了我的生活。謝謝! – odiszapc

+0

今年是2013年,我必須關心32年前MS-DOS 1.0如何運作。我不知道我是否應該傷心或印象深刻。 –

0

使用該行家命令(設置maven_batch_pause =上)將完全求解帶此。

@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 script exits here, the second line never been executed 
    java -jar target/compiled_tar.jar