【问题标题】:Maven, exclude folder of resources from packaged jarMaven,从打包的jar中排除资源文件夹
【发布时间】:2018-04-01 15:45:21
【问题描述】:

我正在尝试为我的应用程序实现以下分发,并且我遵循 this question 作为指导方针

dist/
|-- application-1.0.jar
|-- conf/
    |-- application.properties
    |-- log4j.properties
|-- lib/
    |-- *.jar

我的src/main/resources 如下所示

resources/
|-- to.be.packaged.inside.jar
|-- to.be.packaged/
|   |-- also
|-- conf/
    |-- application.properties
    |-- log4j.properties

现在,我想排除整个 conf 文件夹被打包到 JAR 中(但放置在目标文件夹中)。

我尝试了以下配置maven-jar-plugin

<excludes>
  <exclude>conf/*</exclude>
</excludes>

但是,这仍然将 一个空的 conf 文件夹打包到 JAR 中。如何排除文件夹和内容

【问题讨论】:

    标签: java maven jar maven-assembly-plugin maven-resources-plugin


    【解决方案1】:

    使用conf/*,您只是排除了匹配的文件,它与conf 目录不匹配。通过添加&lt;exclude&gt;conf&lt;/exclude&gt;,该目录也将被排除在外。

    但是,您应该问自己:这些文件是否应该在类路径中可用?我希望 conf 目录是项目根目录中的一个目录(即 &lt;project-root&gt;/conf ),这也意味着一个更干净的 pom,因为您不必排除资源。

    【讨论】:

    • 我只尝试了conf,但在那种情况下没有排除任何东西。清洁剂 pom 是什么意思?
    • 请注意,所有目录和文件都已评估,因此仅 conf 是不够的。conf/application.properties 与排除模式不匹配,因此包含在内。 WRT 清洁器 pom,您不必添加自定义配置。当然,它只有几行,但通过移动 conf 文件夹,配置也与类路径隔离,这在考虑外部化配置时是一件好事。
    • @TuomasToivonen 答案是除了现有的之外,您还需要添加第二个排除项。所以你将有 2 个排除项:&lt;exclude&gt;conf/*&lt;/exclude&gt;&lt;exclude&gt;conf&lt;/exclude&gt;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 2023-03-05
    • 2019-09-28
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多