终止从maven启动的java应用程序

时间:2012-12-28 19:40:20

标签: java maven jvm

我使用exec-maven-plugin来执行java应用程序:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>upload-res</id>
            <phase>package</phase>
            <goals>
                <goal>exec</goal>
            </goals>
            <configuration>
                <executable>java</executable>
                <arguments>
                                        <argument>${jvmEncoding}</argument>
                                        <argument>${jvmMaxPermSize}</argument>
                    <argument>-classpath</argument>
                    <classpath />
                    <argument>${myClass}</argument>
                </arguments>
            </configuration>
        </execution>
    </executions>
</plugin>

根据互联网连接,应用程序可能会运行几分钟。如果我只是终止:

mvn clean install

在lauched应​​用程序完成之前,它仍然在后台运行。如果maven构建中断,是否可以终止java应用程序?

1 个答案:

答案 0 :(得分:1)

难点在于JVM是在单独的进程中启动的,您无法再使用直接的JVM内部Java代码与其进行通信。您需要某种进程间通信。有两种方法可以做到这一点:1)让你的应用程序在端口上侦听信号,让它自行终止,或者2)在某处记录进程的pid,然后发出操作系统kill命令。两者都有点难看。

最好的方法取决于应用程序是什么。当我们启动Jetty进行调试时,我们使用选项1。某些应用服务器会自动侦听终止信号。