Maven 2 groovy(java):exec()不从进程分离(Intellij IDEA vs Maven+;TestNG)

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> )

我有一个启用了TestNG和Surefire插件的Groovy Maven2测试项目

我想在最后一个测试方法中启动外部进程(*.cmd文件,它启动一些*.exe文件),完成测试并在测试后让进程继续运行

我尝试了以下代码来执行此操作:

1次尝试

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()