0

我有一个 jar 类型的项目。这个 jar 是WEB-INF/lib第三方 webapp 的“扩展模块”(可在公共 maven repo 上获得)。在pom.xml中,我对该 webapp 有战争类型的依赖。

我希望能够mvn jetty:run-forked在未提取的war文件上运行(直接从~/.m2/repository将项目依赖项和jar工件“虚拟”添加到WEB-INF / lib中。这样做似乎比预期的要简单,因为码头初始化变得相当复杂。我最终搞砸了使用 jetty/maven Java 源代码有效地重新编程 XML 中的初始化。:) 最后查看http://wiki.eclipse.org/Jetty/Zip_Exceptions_Reading_Jar_or_War_Files前面还有更多麻烦。事实上,对于非平凡的 webapps 似乎不可能运行未爆炸的战争(由于“文件不可解析或与 URLClassloader 不兼容”)。

鉴于当前的码头/Maven 来源,这可能吗?

需要做什么才能使其正常工作?

4

1 回答 1

0

你可以用你的扩展模块重新打包 webapp WAR 并运行它。您需要:

  1. 将您的扩展模块的打包类型更改为 WAR,但 Maven 仍将您的类打包在一个 JAR(位于 WAR 内部)中,其中archiveClasses = true
  2. 使用maven-war-plugin 的覆盖功能将模块的 JAR 插入 webapp WAR。
  3. 在生成的 WAR 上运行 Jetty。
于 2014-08-17T14:59:23.780 回答