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

时间:2017-07-19 10:57:47

标签: java maven netbeans

我在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停止按钮来消亡。

1 个答案:

答案 0 :(得分:1)

当你点击&#34;停止&#34;在NetBeans输出中,NB停止maven进程,但是maven产生了实际的程序输出,因此stop命令不会移交给你的程序。

NetBeans使用&#39; exec&#39;来调用exec-maven-plugin。目标默认。如果您将其更改为&#39; java&#39;目标没有新的过程。在下面的更改之后,&#39;运行&#39;您项目中的部分&#39;属性&#39;将是空的,没有用。我没有测试如果你打电话给System.exit&#39;会发生什么?或者在这种情况下类似。

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

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

Maven exec:exec in 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'
  3. 所以它看起来像这样:

    Maven exec:java in Netbeans

    从现在开始,Maven不会分叉一个新进程,所以当你点击&#34;停止&#34;它实际上会阻止这个过程。