【问题标题】:Maven overlays and jetty pluginMaven 覆盖和码头插件
【发布时间】:2013-12-28 05:40:57
【问题描述】:

我正在使用 Maven 覆盖并在 pom 中包含一个依赖战争,如下所示

<dependency>
  <groupId>com.test.dependent</groupId>
  <artifactId>dependent</artifactId>
  <version>1.0-SNAPSHOT</version>
  <type>war</type>
  <scope>runtime</scope>
</dependency>

生成的战争文件看起来不错,它包含两个项目的资源,如果我将它部署到我的 tomcat 服务器,一切都会按预期工作。

但是我习惯于在 maven 中使用 jetty 插件并使用目标 jetty:run 运行我的构建

<build>
  <plugins>
    <plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>maven-jetty-plugin</artifactId>
    <version>6.1.10</version>
    </plugin>
   </plugins>
  <finalName>myproject</finalName>
</build>

不幸的是,jetty 似乎不会包含依赖项目中的文件。如何配置插件以考虑依赖项目?

【问题讨论】:

    标签: java maven jetty overlays


    【解决方案1】:

    我不知道maven-war-plugin 包会自动覆盖(我总是在配置中添加一个显式的&lt;overlays&gt; 部分),但如果这是真的,只需运行mvn package jetty:run 应该可以工作,因为jetty:run 也会检查目标目录。

    【讨论】:

    • 这似乎没有帮助,虽然在我的目标文件夹中看起来所有文件都在那里,所以它们在 war 文件中,依赖项目中的文件无法通过浏览器访问
    • 刚刚注意到:启动码头时,我收到日志消息 [INFO] Webapp directory = C:\Users\paul\develop\myproject\src\main\webapp 在这个文件中我当然不会拥有依赖项目中的文件。知道如何配置码头以便从目标获取文件吗?
    • @Paul :除了前面提到的在war-plugin 配置中明确定义覆盖,我不知道——否则它对我来说是开箱即用的。不过,我确实使用了更新版本的maven-jetty-plugin (6.1.25)。
    • 当前的jetty-maven-plugin 版本是9.1.0.v20131115 - eclipse.org/jetty/documentation/current/jetty-maven-plugin.html。 Jetty 6 于 2010 年 EOL。截至今天,自 Jetty 6.1.10 以来已有 151 个版本的 Jetty。
    • 最近的 jetty-9 maven 插件当然支持 maven-war-plugin 覆盖。见eclipse.org/jetty/documentation/current/…
    【解决方案2】:

    Jetty 7.0.2 and higher 上,您可以将jetty:rununpackOverlays 配置一起使用:

    <webAppConfig>
        ...
        <unpackOverlays>true</unpackOverlays>
        ...        
    </webAppConfig>
    

    在 Jetty 6 上,您唯一的选择是为此使用 jetty:run-war

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-16
      • 2014-09-12
      • 1970-01-01
      • 1970-01-01
      • 2016-02-12
      • 1970-01-01
      • 2019-07-14
      • 2021-11-24
      相关资源
      最近更新 更多