【问题标题】:How to stop a maven project started in Netbeans如何停止在 Netbeans 中启动的 Maven 项目
【发布时间】:2017-12-24 14:32:11
【问题描述】:

我在 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 停止按钮就死掉了。

【问题讨论】:

    标签: java maven netbeans


    【解决方案1】:

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

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

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

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

    你必须修改

    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 不会派生新进程,因此当您点击“停止”时,它实际上会停止该进程。

    【讨论】:

      猜你喜欢
      • 2012-01-13
      • 2013-06-06
      • 2014-11-19
      • 2013-01-09
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      相关资源
      最近更新 更多