【发布时间】:2011-10-12 16:58:30
【问题描述】:
使用 cargo-maven2-plugin 中的 run mojo 我想知道关闭容器的更好方法。
控制台输出显示 Ctrl+C 停止,但这似乎无济于事。
如果我终止,它会留下一个孤立的 java.exe 进程,我必须杀死自己。
我做错了吗?这有点麻烦。
编辑:我在独立配置中使用 Tomcat。如果我使用嵌入式 Jetty,自然会终止工作,但是我们需要 Tomcat。
【问题讨论】:
使用 cargo-maven2-plugin 中的 run mojo 我想知道关闭容器的更好方法。
控制台输出显示 Ctrl+C 停止,但这似乎无济于事。
如果我终止,它会留下一个孤立的 java.exe 进程,我必须杀死自己。
我做错了吗?这有点麻烦。
编辑:我在独立配置中使用 Tomcat。如果我使用嵌入式 Jetty,自然会终止工作,但是我们需要 Tomcat。
【问题讨论】:
CTRL+C 似乎是已知的Eclipse/Jetty issue。最后一篇文章说发出mvn cargo:stop 会停止一个已经在运行的容器,但是它对我不起作用——尽管我只是用原型生成的webapp 做了一些快速测试。
使用 Eclipse Indigo Service Release 1 (20110916-0149) 如果我发出 mvn cargo:run 并等待容器启动(现在是 Jetty,没有配置;让我们看看你能不能得到它像这样工作)点击红色的大 Terminate 按钮会终止正在运行的进程,并且不会留下任何挥之不去的java{,w}.exe。
我不知道您现在如何从 Eclipse 发出mvn cargo:run,但也许您将它用作外部工具(这就是留下一个进程的原因)。如果您安装了 m2eclipse,您应该为它创建 Maven 运行配置,如下所示:
Run --> Run Configurations --> Maven build --> right click --> New
从这里开始应该很简单。
(我发现了两个 Eclipse 错误单(here 和 here)似乎与 Eclipse 无法读取 healthy CTRL+C 通过它的控制台。)
我已经验证,当我通过 m2e 插件从 Eclipse 使用 mvn cargo:run 启动外部 Tomcat (7.0.23) 实例时(容器启动后)CTRL+C 确实不行。
在此之后,我从 Cygwin 控制台运行了 mvn cargo:run。结果是一样的。
我终于在 Windows 的 cmd 中尝试过了,它成功了。
我的猜测是这是cargo-maven-plugin 中的一个错误。
从 Eclipse 或 Cygwin 运行 mvn cargo:stop 对我有用。
您可以通过在 Eclipse 中创建 Maven build Run 或 Debug 配置从 Eclipse 运行 cargo 插件。
【讨论】:
cmd 运行cargo:run(或者实际上任何其他需要Ctrl-C 的Windows 程序)。在 mintty wiki 上有关于此线程评论的更多背景:code.google.com/p/mintty/issues/detail?id=56#c14
mvn cargo:run 或 mvn cargo:stop?
一般来说,如果您在调试模式下使用 Eclipse Maven 启动器运行 Cargo(即 Debug as --> Maven build...),在 Eclipse 控制台(红色按钮)上终止进程不会留下任何孤立进程...
我不知道为什么,但它有效 :) 至少在我的工作区
【讨论】: