如何使用 jetty 9 maven 插件让 deploy-war 工作?

How do I get deploy-war to work using jetty 9 maven plugin?

在 jetty-9 中,mvn jetty:deploy-war 无法启动 Web 应用程序。 Maven 刚刚结束构建,而我预计它会被 运行 码头服务器阻塞。根据日志输出,jetty maven 插件确实在端口 8080 上启动了一个连接器,并启动了 WebAppContext。不过似乎无法将端口绑定到上下文。

重现步骤:

创建网络应用程序:mvn archetype:generate -DinteractiveMode=false -DarchetypeArtifactId=maven-archetype-webapp -DgroupId=jetty -DartifactId=jetty-demo

将此插件部分添加到 pom:

<build>
    <plugins>
        <plugin>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>9.2.10.v20150310</version>
        </plugin>
    </plugins>
    ...
</build>

执行:

mvn package

mvn jetty:deploy-war 这应该启动 Web 应用程序然后阻止,但它只是结束构建

使用 jetty-8 一切正常:

<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.16.v20140903</version>

注意:mvn jetty:run-war 在 jetty 9 中按预期工作。这与 deploy-war 相同,但它会触发 jetty 在 deploymentwar 之前构建

参考:the jetty-9 maven plugin manual。我调试了码头启动过程,但到目前为止运气不佳。

The documentation you linked to tells you why.

daemon参数设置为false,它会阻塞