如何防止 Maven 在 Windows 中退出控制台?
How to prevent Maven from exiting console in Windows?
环境:Windows 10
、Java 11.0.10
、Maven 3.8.1
有一个简单的批处理文件run.bat
mvn clean package
echo After build
从命令行执行 call run.bat
时,我得到了 maven build 的完整输出,但是行 After build
从未打印到控制台。输出的最后一行是 Process finished with exit code N
(如果构建成功 N=0
,否则 N=1
)。
一种可能性是在单独的进程中使用start
到运行 maven,但问题是需要顺序执行:
mvn clean package
command X // depends on the previous command artifact
我不确定如何实现,假设 Maven 在内部调用 exit
。
有没有办法在同一脚本中按顺序执行 mvn
命令和其他命令?
当您 运行 mvn
时,您实际上正在做的是 运行 一个名为 mvn.cmd
的批处理文件。当您 运行 来自另一个批处理文件时,如果您希望在完成后 return 它,您需要使用 Call
命令。
call mvn clean package
echo After build
主要问题是由于 cli 'man' 页面的默认位置没有告诉最终用户他们正在 运行 什么或如何正确地这样做。他们确定命令行的使用,意味着直接在该界面中输入,因此试图通过最小化您需要执行的输入量来提供帮助。为了实现这一点,他们假设您没有修改您的 %PATHEXT%
变量,并且通常期望您修改您的 %PATH%
变量。
然而,当您使用批处理文件时,您只需要输入一次命令,这意味着减少输入的需求已经不那么重要了。使用扩展名和完整路径 运行 的命令也比允许在执行时搜索这些内容更快。也就是说,这是从 batch-file:
执行任务的推荐方法
Call "%ProgramFiles%\Maven\apache-maven-3.8.1\bin\mvn.cmd" clean package
Echo After build
快速解释 %PATHEXT%
的作用;当你 运行 mvn
时,系统会在当前目录中寻找名为 mvn
的文件,如果不存在,它会读取 %PATHEXT%
变量,并且附加在其值中列出的每个扩展名,按顺序从头到尾,直到它找到一个可以 运行 具有该扩展名的文件。它会 运行 只找到它找到的第一个。
如果在当前工作目录中没有找到,它会搜索 %PATH%
下的值中列出的每个位置,同样按顺序从头到尾搜索。它会 运行 它找到的第一个,像以前一样附加 %PATHEXT%
值。
环境:Windows 10
、Java 11.0.10
、Maven 3.8.1
有一个简单的批处理文件run.bat
mvn clean package
echo After build
从命令行执行 call run.bat
时,我得到了 maven build 的完整输出,但是行 After build
从未打印到控制台。输出的最后一行是 Process finished with exit code N
(如果构建成功 N=0
,否则 N=1
)。
一种可能性是在单独的进程中使用start
到运行 maven,但问题是需要顺序执行:
mvn clean package
command X // depends on the previous command artifact
我不确定如何实现,假设 Maven 在内部调用 exit
。
有没有办法在同一脚本中按顺序执行 mvn
命令和其他命令?
当您 运行 mvn
时,您实际上正在做的是 运行 一个名为 mvn.cmd
的批处理文件。当您 运行 来自另一个批处理文件时,如果您希望在完成后 return 它,您需要使用 Call
命令。
call mvn clean package
echo After build
主要问题是由于 cli 'man' 页面的默认位置没有告诉最终用户他们正在 运行 什么或如何正确地这样做。他们确定命令行的使用,意味着直接在该界面中输入,因此试图通过最小化您需要执行的输入量来提供帮助。为了实现这一点,他们假设您没有修改您的 %PATHEXT%
变量,并且通常期望您修改您的 %PATH%
变量。
然而,当您使用批处理文件时,您只需要输入一次命令,这意味着减少输入的需求已经不那么重要了。使用扩展名和完整路径 运行 的命令也比允许在执行时搜索这些内容更快。也就是说,这是从 batch-file:
执行任务的推荐方法Call "%ProgramFiles%\Maven\apache-maven-3.8.1\bin\mvn.cmd" clean package
Echo After build
快速解释 %PATHEXT%
的作用;当你 运行 mvn
时,系统会在当前目录中寻找名为 mvn
的文件,如果不存在,它会读取 %PATHEXT%
变量,并且附加在其值中列出的每个扩展名,按顺序从头到尾,直到它找到一个可以 运行 具有该扩展名的文件。它会 运行 只找到它找到的第一个。
如果在当前工作目录中没有找到,它会搜索 %PATH%
下的值中列出的每个位置,同样按顺序从头到尾搜索。它会 运行 它找到的第一个,像以前一样附加 %PATHEXT%
值。