Maven 2 groovy(java):exec()不从进程分离(Intellij IDEA vs Maven+;TestNG)
我有一个启用了TestNG和Surefire插件的Groovy Maven2测试项目 我想在最后一个测试方法中启动外部进程(*.cmd文件,它启动一些*.exe文件),完成测试并在测试后让进程继续运行 我尝试了以下代码来执行此操作: 1次尝试Maven 2 groovy(java):exec()不从进程分离(Intellij IDEA vs Maven+;TestNG),maven-2,exec,testng,runtime.exec,processbuilder,Maven 2,Exec,Testng,Runtime.exec,Processbuilder,我有一个启用了TestNG和Surefire插件的Groovy Maven2测试项目 我想在最后一个测试方法中启动外部进程(*.cmd文件,它启动一些*.exe文件),完成测试并在测试后让进程继续运行 我尝试了以下代码来执行此操作: 1次尝试 def builder = new ProcessBuilder('cmd','/c <name>.cmd') builder.directory( ( new File( <path_to_working_directory> )
def builder = new ProcessBuilder('cmd','/c <name>.cmd')
builder.directory( ( new File( <path_to_working_directory> ) ) )
builder.start()
( new AntBuilder() ).exec(
dir: "<path_to_working_directory>",
executable: "<name>.cmd"
)
但这对我也没有帮助
你能帮我解决这个问题吗
提前谢谢 所以,我在这里看不到任何关于我的问题的答案。但我有一些更新 我发现我可以使用PsExec工具而不是直接调用cmd:
def builder = new ProcessBuilder( 'psexec', 'cmd', '/c', '<name>.cmd' )
builder.directory( ( new File( <path_to_working_directory> ) ) )
builder.start()
def builder=newprocessbuilder('psexec','cmd','/c','.cmd')
目录((新文件()))
builder.start()
当我仅从clean Maven(而不是从Jenkins)启动它时,这段代码运行良好:流程启动,Maven任务成功完成,流程继续运行
但在作为Maven2 Jenkins任务的一部分执行此代码的过程中,我再次面临一个问题:psexec已启动,但Jenkins任务正在运行,并且在手动终止Jenkins任务之前,我的进程未启动
为了避免这个问题,我创建了一个简单的附加Groovy服务脚本,我在初始机器准备期间在目标机器上手动启动(和)。此脚本始终在计算机上运行
我将命令文件的名称发送给这个侦听器,以便从我从Jenkins启动的测试中执行,它将成功执行所有CMD:进程启动,Jenkins任务成功完成,进程继续运行。我在这个侦听器中使用processbuilder
我用它来命名
还有,我发现了。但对我来说,我觉得我的系统看起来更棒
set path=<path_to_execFile>;%path%
start <execFileName>.exe
"full command to run my cmd".execute()
def builder = new ProcessBuilder( 'psexec', 'cmd', '/c', '<name>.cmd' )
builder.directory( ( new File( <path_to_working_directory> ) ) )
builder.start()