在Windows上,Ctrl + C无法停止Maven启动Java进程的原因

Koh*_*URA 5 java tomcat maven

我创建了一个可由Maven(mvn clean install exec:exec)运行的可执行Tomcat jar应用程序.Linux上的Ctrl+ 可以停止此应用程序C.但是,它无法在Windows上运行.有谁知道原因和解决方案?

环境:

$ mvn -version
Apache Maven 3.2.2 (45f7c06d68e745d05611f7fd14efb6594181933e; 2014-06-17T22:51:42+09:00)
Maven home: c:\apache-maven-3.2.2
Java version: 1.8.0_121, vendor: Oracle Corporation
Java home: c:\Program Files\Java\jdk1.8.0_121\jre
Default locale: ja_JP, platform encoding: MS932
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"
Run Code Online (Sandbox Code Playgroud)

pom.xml的摘录:

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.1</version>
    <executions>
        <execution>
            <id>tomcat-run</id>
            <goals>
                <goal>exec-war-only</goal>
            </goals>
            <phase>package</phase>
            <configuration>
                <path>/</path>
                <enableNaming>true</enableNaming>
                <finalName>embtest.jar</finalName>
                <charset>utf-8</charset>
            </configuration>
        </execution>
    </executions>
</plugin>
<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
        <warName>ROOT</warName>
    </configuration>
</plugin>
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2.1</version>
    <executions>
        <execution>
            <id>startup-uber-tomcat</id>
            <phase>install</phase>
            <goals>
                <goal>exec</goal>
            </goals>
            <configuration>
                <classpathScope>test</classpathScope>
                <executable>java</executable>
                <arguments>
                    <argument>-jar</argument>
                    <argument>target/embtest.jar</argument>
                </arguments>
            </configuration>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

重现步骤:

(1)在Windows上运行命令:

$ git clone https://github.com/k-tamura/embtest.git
$ cd embtest
$ mvn clean install exec:exec
Run Code Online (Sandbox Code Playgroud)

(2)访问http:// localhost:8080 - >显示主页面.

(3)按Ctrl+C

(4)访问http:// localhost:8080 - >仍然显示主页面(Tomcat未停止).

nhu*_*uvy 0

停止所有作业:

mvn tomcat7:shutdown
Run Code Online (Sandbox Code Playgroud)

当使用组合键Ctrl+时C,仍然有一些工作。

参考:

http://tomcat.apache.org/maven-plugin-2.2/tomcat7-maven-plugin/plugin-info.html

http://tomcat.apache.org/maven-plugin-2.2/tomcat7-maven-plugin/shutdown-mojo.html

  • 如果可以的话,我想像Linux一样通过ctrl+c关闭。 (2认同)