使用maven程序集插件覆盖资源文件

Loc*_*han 7 java resources overwrite maven maven-assembly-plugin

我使用maven-assembly-plugin和"jar-with-dependencies"来打包jar.有2个依赖项工件有log-back.xml.第二个工件取决于第一个工件.我希望在最终jar中有第二个工件的log-back.xml,但它总是包含第一个工件的log-back.xml.那么我该如何控制呢?

谢谢

Rag*_*ram 6

您可以使用unpackOptions来实现此目的.尝试以下内容:

<assembly>
...
    <dependencySets>
        <dependencySet>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>${groupId}:${artifact.whose.logback.is.to.be.excluded} </include>
            </includes>
            <unpack>true</unpack>
            <unpackOptions>
                <excludes>
                    <exclude>**/logback.xml</exclude>
                </excludes>
            </unpackOptions>
        </dependencySet>
        <dependencySet>
            <outputDirectory>/</outputDirectory>
            <excludes>
                <exclude>${groupId}:${artifact.whose.logback.is.to.be.excluded}</exclude>
            </excludes>
            <unpack>true</unpack>
        </dependencySet>
    </dependencySets>
</assembly>
Run Code Online (Sandbox Code Playgroud)


Fra*_*ank 1

第一个工件是您自己项目的模块吗?如果是这样,您可以排除 pom.xml 的资源部分中的 log-back.xml。

<resources>
  <resource>
    <directory>src/main/resources</directory>
    <excludes>
      <exclude>log-back.xml</exclude>
    </excludes>
  </resource>
  ...
</resources>
Run Code Online (Sandbox Code Playgroud)

然而,只有当该模块在整个 jar 的范围之外构建时,它本身不需要 log-back.xml 时,这才有效。