如何阻止在Netbeans中开始的maven项目

我在NetBeans中有一个以main函数开头的项目,它接受参数。 当我点击“停止”按钮时,项目继续运行,但不再有输出。 目前我必须记住从控制台手动停止进程。

如何修改我的项目,maven设置或NetBeans配置,以便在我点击停止时停止进程。

我可以忍受没有终结器或ShutdownHooks调用的进程。

考虑这个课程:

public class Main { public static void main(String[] args) { System.out.println("args: " + Arrays.asList(args)); new Main().action(); } private void action() { Date start = new Date(); long endTime = start.getTime() + 600000; Date end; do { synchronized (Thread.currentThread()) { try { Thread.currentThread().wait(1000); System.out.println("PING"); } catch (InterruptedException iex) { return; } } end = new Date(); } while (end.getTime() < endTime); } } 

我希望它只使用NetBeans停止按钮来消亡。

当您在NetBeans输出中点击“停止”时,NB会停止maven进程,但是maven产生了实际的程序输出,因此stop命令不会移交给您的程序。

默认情况下,NetBeans使用’exec’目标调用exec-maven-plugin。 如果将其更改为“java”目标,则没有新进程。 在下面的更改之后,项目“属性”中的“运行”部分将为空且无用。 我没有测试在这种情况下调用’System.exit’或类似的情况会发生什么。

另请注意,从现在开始,您必须自己修改版本号。

您必须转到“项目”窗口,右键单击项目,转到“ Properties然后选择“ 操作”元素和“ 运行”项目条目。 它看起来像这样:

Maven执行官:Netbeans的执行官

你必须修改

  1. 执行目标: process-classes org.codehaus.mojo:exec-maven-plugin:1.2.1:java (最后将exec更改为java )。
  2. 设置属性:exec.mainClass=de.steamnet.stopfromnetbeans.Main exec.classpath=%classpath exec.args=First Second 'Third Space'

所以它看起来像这样:

Maven exec:Netbeans中的java

从现在开始,Maven不会分叉一个新进程,所以当你点击“Stop”时它实际上会停止进程。