【问题标题】:How does maven jetty package a war?maven jetty 如何打包一场战争?
【发布时间】:2020-01-06 10:24:50
【问题描述】:

我正在运行一个开源软件 (https://github.com/att/XACML),文档说要使用 maven jetty 来运行该应用程序。这工作正常。

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

所以我的问题是:maven jetty 如何打包战争?它在运行时所做的任何事情会使其与仅仅尝试自行部署战争有所不同吗?使用 maven jetty 和使用 jetty runner 之类的东西与 maven clean install 产生的战争有什么区别?

【问题讨论】:

  • 据我了解,Maven 中的码头目标不会引发战争,而是直接部署到嵌入式码头。换句话说,没有什么可抢的。

标签: maven jetty maven-jetty-plugin


【解决方案1】:

Jetty 不打包战争。

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

【讨论】:

  • 也许我应该在我的问题上更具体一些,但是 maven jetty(作为命令)确实打包了一场战争并一步部署它,我想知道这是否有什么不同之处以其他方式发动战争。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-31
  • 1970-01-01
  • 2014-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多