当前位置: 首页 > 知识库问答 >
问题:

Maven资源插件忽略排除列表

宰父子安
2023-03-14

Maven的Resources插件似乎不尊重排除资源配置中的元素。

我有一个大型Java /Dart项目,我需要在其中部署一个WAR文件,该文件将我的UI和后端都放在单独的JAR中。我想减少部署文件的大小,并且我想从WAR中删除某些文件夹。根据插件留档,我想我可以简单地在插件配置中设置排除s,并且它不会复制不必要的文件夹。然而,尽管Maven模型包包含setExunides函数,但Resources插件似乎完全忽略了这些。

到目前为止,我尝试了两种主要方法。我的配置如下:

<configuration>
    <outputDirectory>${project.build.directory}/${project.build.finalName}</outputDirectory>
    <resources>
        <resource>
            <directory>src/main/webapp</directory>
            <excludes>
                <exclude>web.xml</exclude>
                <exclude>appengine-web.xml</exclude>
                <exclude>**/web/_el/*</exclude>
                <exclude>WEB-INF/pages/frontend/**</exclude>
                <exclude>**/_el/js/frontend/**</exclude>
                <exclude>**/_el/dart/app/dashboard/lib/**</exclude>
                <exclude>**/_el/dart/app/dashboard/.dart_tool/**</exclude>
            </excludes>
        </resource>
    </resources>
</configuration>

我尝试在执行元素内部以及直接在plugin元素外部使用此配置,但两次都被忽略,并且webapp目录中的所有内容都被盲目复制。
凭直觉,我确实尝试将过滤设置为true,但这只是耗尽了我计算机中的所有内存,它甚至不起作用-它所做的过程被复制了。

我也尝试过使用Shade插件,但很快就放弃了,因为Dont容纳资源变压器只允许后缀过滤,这对于我的用例来说是不够的。

那么我做错了什么?根据文档,我认为插件应该尊重我的排除列表,跳过绝大多数文件,但它显然没有做到这一点。

共有1个答案

单于钊
2023-03-14

您需要使用apache的maven war插件。WAR插件负责收集web应用程序的所有工件依赖项、类和资源,并将它们打包到web应用程序归档中。

通过使用和配置参数,可以从WAR文件中包括或排除某些文件。它们都采用逗号分隔的Ant文件集模式列表。您可以使用通配符,例如**来表示多个目录,以及*来表示文件或目录名的可选部分。

这是一个我们从WEB-INF/lib中排除所有JAR文件的示例:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.3.1</version>
        <configuration>
          <packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
  ...
</project>

https://maven.apache.org/plugins/maven-war-plugin/examples/including-excluding-files-from-war.html

 类似资料:
  • 在我们的模块(比如说XYZ)中,我们包含了一个maven toolchains插件的依赖项,以使我们的Jenkins构建使用特定的JDK版本运行。但是,当我们在另一个项目中将XYZ模块作为依赖项包含时,一旦我们包含了这个工具链依赖项,它就会进一步引入许多其他依赖项(见下面的屏幕截图)。 其中一些依赖于工具链,如和会导致SLF4J:类路径包含多个SLF4J绑定等问题。当我们部署应用程序时。 我们为工

  • 我正在使用maven-resource-plugin 2.6 vith maven 3.0.5(也尝试了3.0.4)。 我有不同的处决: 当我把下面的方块 在我的内部 我需要把它放进去 这是一个问题吗?因为当我启动构建时,我的pom.xml没有错误。

  • 我在settigns.xml文件中添加了代理配置,但Maven没有使用它,我通过使settings.xml文件无效来确认这一点。我运行maven install命令来更新设置和全局设置以指向正确的文件,仍然没有运气。我正在使用maven3.0.4。

  • 我正在尝试将一个项目从gwt-2.6.1迁移到gwt-2.7。但是,我遇到了一个问题。在一个继承的模块中,由于某种原因,gwt编译器忽略了gwt.xml。所以我有这样的东西。gwt.xml: 但是在使用带有gwt-maven-plugin的maven编译时,我一直收到这样的错误: 如您所见,gwt尝试在servlet目录中编译一个文件,该文件在中被排除。gwt。xml。原因可能是什么?gwt-2.

  • 20.2.1 排除的资源 某些资源没有必要要在更改时触发重启。例如,Thymeleaf模板可以就地编辑,默认情况下,更改/META-INF/maven、/META-INF/resources、/resources、/static、/public或/templates中的资源不会触发重启,但会触发实时重新加载。如果您想自定义哪些资源改动而不会触发重启,可以使用spring.devtools.rest

  • 我正在尝试使用maven-telte-resource-plugin在多模块maven项目中跨模块共享许多资源。不幸的是,共享的二进制资源在捆绑期间被损坏,大概是通过过滤。 我相信,由于从本地存储库中提取共享资源jar时包含损坏的二进制文件,因此在这一阶段会发生损坏。 是否有任何关闭过滤maven-远程资源插件? 目前,我的共享资源模块中的pom看起来像