我使用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应用程序?
答案 0 :(得分:1)
难点在于JVM是在单独的进程中启动的,您无法再使用直接的JVM内部Java代码与其进行通信。您需要某种进程间通信。有两种方法可以做到这一点:1)让你的应用程序在端口上侦听信号,让它自行终止,或者2)在某处记录进程的pid,然后发出操作系统kill命令。两者都有点难看。
最好的方法取决于应用程序是什么。当我们启动Jetty进行调试时,我们使用选项1。某些应用服务器会自动侦听终止信号。