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

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

谢谢

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

  ...   /  ${groupId}:${artifact.whose.logback.is.to.be.excluded}   true   **/logback.xml     /  ${groupId}:${artifact.whose.logback.is.to.be.excluded}  true    

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

   src/main/resources  log-back.xml   ...  

但是,这仅适用于此模块在整个jar范围之外构建时不需要log-back.xml的情况。

(目前使用maven-assembly-plugin的最新版本:3.0.0)

我在程序集构建时遇到了同样的问题。

我有相同属性文件的两个依赖项,但具有不同的内容(一个好,另一个覆盖第一个缺少声明)。

问题是我终于将错误的配置文件替换为我的程序集jar中的另一个。

我发现覆盖文件的唯一最干净的解决方案是:

1 – 在我的项目中添加我想保留的好文件:ex: src/main/resources/META-INF/services/myfileWhichOverwriteTheBadDependenciesRessources.xml

2 – 在我的程序集描述符中添加一个文件集,其中’filtered’设置为’true’:

   ${project.main.resources}/META-INF META-INF true  

(在我的例子中,’project.main.resource’属性被设置为’src / main / resources’)