maven jetty如何打包一个war?

How does maven jetty package a war?

我正在 运行 开发一个开源软件 ware (https://github.com/att/XACML),文档说要使用 maven jetty 运行 应用程序。这很好用。

但是,我正在尝试 运行 它没有 maven 作为依赖项,所以我正在考虑使用生成的 war 并使用码头部署它。但是,这种方法给了我特定于 war 的错误(无法实例化 null 等),这些错误在 运行ning maven jetty 时不确定。

所以我的问题是:maven jetty 是如何打包 war 的?它在 运行 时间所做的任何事情是否会使其不同于仅尝试自行部署 war?使用 maven jetty 和使用像 jetty 运行ner 和从 maven clean install 生成的 war 有什么区别?

Jetty 没有打包war.

Maven 可以,您需要...

  1. 您项目的 pom.xml 应声明为 <packaging>war</packaging>
  2. 您有一个 src/main/webapp 目录。
  3. 您已让 maven 执行 package 阶段。

当你使用类似 mvn jetty:run-war 的东西时,首先发生的事情是 package 阶段执行,然后 jetty:run-war 目标执行。

参见:JettyRunWarMojo.java

@Mojo(name = "run-war", 
      requiresDependencyResolution = ResolutionScope.COMPILE_PLUS_RUNTIME)
@Execute(phase = LifecyclePhase.PACKAGE)
public class JettyRunWarMojo extends AbstractMojo

Jetty 没有进行 war 的打包,Maven 和它的默认 package 阶段是(此处的行为由您的 <packaging>war</packaging> 定义的标准 Maven 生命周期决定)

参见:https://maven.apache.org/ref/3.2.2/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging