2017-07-19 67 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不會從一個新的進程,所以當你點擊「停止「它實際上會停止進程。