【问题标题】:Precedence packagingExcludes and packagingIncludes maven war pluginPrecedence PackagingExcludes 和 PackagingIncludes maven war 插件
【发布时间】:2021-02-03 01:24:25
【问题描述】:

最近我将我的应用程序配置为使用 codehaus 上描述的“瘦身战争”(标题:解决瘦身战争问题)。基本上,我从战争中排除所有罐子,并将其作为战争 pom 依赖项添加到耳朵中。现在我遇到了两个罐子的问题。所以对我来说,合乎逻辑的做法是使用 PackagingInclude 将它们包含在 war 文件中。

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
        <packagingIncludes>WEB-INF/lib/A.jar, WEB-INF/lib/B.jar</packagingIncludes>
    </configuration>
</plugin>

使用 de plugin documentationanswer 中显示的正则表达式,但它似乎没有做任何事情。它只是排除了一切。

在插件的source code 中我发现它使用了 org.codehaus.plexus » plexus-utils 的 DocumentScanner。我不太明白它是如何工作的。

我认为这很简单。但是我做错了什么?当A也是C的传递依赖时,是否包含不起作用?

编辑:插件版本有什么作用吗?现在我使用的是 2.6,但之前使用的是 2.1-alpha-2 版本。

【问题讨论】:

    标签: java regex maven maven-3 maven-war-plugin


    【解决方案1】:

    也找到了this answer。以下行(并且只有这一行)有效:

    &lt;packagingExcludes&gt;%regex[WEB-INF/lib/(?!common-A|common-B).*.jar]&lt;/packagingExcludes&gt;

    只有common-A-x.x.jarcommon-B-x.x.jar 在war 文件的WEB-INF/lib文件夹中。应该可以提取正则表达式中的公共部分,但我尝试的方法不起作用。

    【讨论】:

      【解决方案2】:

      尝试使用仅包含而不使用通配符排除定义。由于您排除了所有罐子,这会占用您的包含。据我了解文档(以及我的记忆),默认设置是包含所有内容,但是一旦您指定包含,插件将仅包含您的 jar 列表。

      【讨论】:

      • 您是对的,但也排除了其他所有内容。所以没有 .jsp 等。
      • 好的,您的排除正则表达式看起来如何?也许是错的。我还需要使用正则表达式,它工作得很好。但是如果
      • 抱歉,缺少休息。我想说的是,如果可能的话,我会避免使用正则表达式,因为它不易维护。顺便提一句。 maven的整个打包机制很差,太复杂了。
      • 如果可能的话,我想避免使用正则表达式,但此时我不会怎么做。最初的问题仍然是优先包含或排除什么以及这意味着什么。
      猜你喜欢
      • 2012-07-14
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      • 1970-01-01
      • 2011-06-01
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      相关资源
      最近更新 更多