2017-07-19 42 views
2

我在NetBeans中有一个项目,该项目以带有参数的主函数开头。当我点击“停止”按钮时,项目继续运行,但没有输出。 目前我必须记住手动停止从控制台的过程。如何停止在Netbeans中启动的maven项目

如何修改我的项目,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

当您在NetBeans输出中点击“停止”时,NB会停止maven进程,但是maven产生了实际的程序输出,所以停止命令并没有移交给您的程序。

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

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

你必须去Projects窗口,右键单击您的项目,进入Properties,并选择操作元件与该运行项目条目。它看起来是这样的:

Maven exec:exec in Netbeans

您必须修改

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

因此,它看起来像这样:

Maven exec:java in Netbeans

从现在起,Maven不会从一个新的进程,所以当你点击“停止“它实际上会停止进程。