【问题标题】:Force unpacking with maven-dependency-plugin使用 maven-dependency-plugin 强制解包
【发布时间】:2014-05-14 12:10:05
【问题描述】:

我正在使用 Maven 3.2.1Eclipse Kepler。我有一个动态 Web 项目,它依赖于另一个包含一些 JSP 的组件。我现在希望依赖项中的 JSP 成为动态 Web 项目的 Web 根目录的一部分。我选择使用 maven-dependency-pluginunpack 目标来完成此任务。

我添加了一个插件定义来将 JAR 解压到 /target/m2e-wtp/web-resources。 Unfortunatley Eclipse 不时清理这个文件夹并且 JSP 消失了。为了再次解压它们,我必须删除target/dependency-maven-plugin-markers文件夹。否则插件不会再次解压文件。

是否可以强制解包并忽略插件标记?

有没有更好的方法从依赖项中获取 Web 资源到我的动态 Web 项目中?

【问题讨论】:

    标签: eclipse maven m2eclipse m2e eclipse-kepler


    【解决方案1】:

    是的,有更好的方法,但它与 Tomcat 的“不发布的服务模块”功能(或 Weblogic 的等价物)不兼容

    删除您的 maven-dependency-plugin 配置并将您的依赖项添加为战争覆盖。如果您的依赖是一场战争,它将被自动识别为覆盖 (http://maven.apache.org/plugins/maven-war-plugin/overlays.html)。如果是 zip 或 jar,则需要在 maven-war-plugin 定义中添加特定配置。一些东西:

    <plugin>
      <artifactId>maven-war-plugin</artifactId>
      <version>2.4</version>
      <configuration>
        <overlays>
          <overlay>
            <!-- /!\ must also be added as a project dependency-->
            <groupId>foo</groupId>
            <artifactId>bar</artifactId> 
            <type>jar</type>
            <targetPath>relative/path/to/contextroot</targetPath>
           </overlay>
         </overlays>
       </configuration>
    </plugin>
    

    在部署之前,资源会被解压到target/m2e-wtp/overlays/bar-version.jar/下,然后部署到你的应用服务器上

    【讨论】:

    • 嗯。真的不行。即使没有配置覆盖,Eclipse 也会将 WAR 的依赖项放入 target/m2e-wtp/overlays。但是当我在 Weblogic 服务器中启动 Web 项目时,找不到这些文件(在我的情况下为 JSP)。
    • 也许尝试部署为展开的档案。在就地提供 webapp 时,Weblogic 似乎不能很好地处理多个 web 资源文件夹。见stackoverflow.com/questions/21124864/…
    • 但是我会失去热插拔和调试功能,不是吗?
    • 对不起,我不知道,我不使用 WebLogic
    猜你喜欢
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 2011-09-21
    • 2016-09-24
    • 1970-01-01
    相关资源
    最近更新 更多