终止在eclipse中运行的maven-jetty-plugin

mat*_*lka 1 eclipse jetty m2eclipse maven

我正在使用maven-jetty-plugin来快速运行和调试我在Eclipse/m2eclipse下开发的WebApp.它开始正常,我可以完全使用调试器,但我不能优雅地停止应用程序.

当我在控制台视图中执行ctrl + c时它虽然在启动器配置中启用了"allocate console",但它什么也没做.

在简单的java项目中,ctrl + c选项工作正常(在Windows上测试).所以它似乎是一些远程/嵌入式jvm问题.我的应用程序使用持久性JMS队列,因此每次重启后我都需要手动终止其他服务器上的会话.这不是很敏捷.

任何人都知道问题的根源是什么?或者也许有一些已知的解决方法?

Man*_*nes 6

如果您使用m2eclipse插件,您可以直接从eclipse运行maven.

1转到您的调试配置,并在maven build下创建一个新条目.
2给它起个名字.
3选择maven项目的基目录.
4为目标输入jetty:运行然后单击调试按钮.

一切都应该是好的.你可以从eclipse里面的控制台视图中杀死它.所有断点应该照常工作.

要从eclipse中正常关闭应用程序,您必须执行以下操作.将以下配置添加到您的pom中以获取jetty插件.这里的重要部分是停止键和停止端口.

<configuration>
    <tmpDir>target/not/necessary</tmpDir>
    <webAppConfig>
        <contextPath>/${project.name}</contextPath>
    </webAppConfig>
    <stopPort>9966</stopPort> 
    <stopKey>jetty-stop</stopKey>
</configuration>
Run Code Online (Sandbox Code Playgroud)

接下来为maven添加另一个运行配置,但这次将目标设置为jetty:stop.它将执行正常关闭.

为了使其更加自动化:目标可以设置为jetty:stop jetty:start.这样,如果进程没有运行,则会出现一个小警告,但启动过程将继续.否则,将正常关闭其他进程,然后启动serwer.

只需要一个命令,它可以通过一个快捷方式运行(运行最后一次构建),减少上下文切换.