使用 Maven Assembly 插件合并 META-INF/services 个文件

Merging META-INF/services files with Maven Assembly plugin

我正在寻找一种合并 META-INF/services 文件的方法,例如META-INF/services/javax.ws.rs.ext.Providers,在使用 Maven Assembly 插件构建 jar-with-dependencies 时。我找到了说明如何使用 Maven Shade 插件执行此操作的答案。不幸的是,我们已经广泛使用了 Mave Assembly 插件,目前还不清楚我们如何插入 Maven Shade 插件。

事实证明,某些版本的 Maven Assembly 插件可以合并这些文件:

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
    <id>jar-with-dependencies</id>
    <formats>
        <format>jar</format>
    </formats>
    <!-- ... -->
    <containerDescriptorHandlers>
        <containerDescriptorHandler>
            <handlerName>metaInf-services</handlerName>
        </containerDescriptorHandler>
        <containerDescriptorHandler>
            <handlerName>metaInf-spring</handlerName>
        </containerDescriptorHandler>
        <containerDescriptorHandler>
            <handlerName>plexus</handlerName>
        </containerDescriptorHandler>
    </containerDescriptorHandlers>
</assembly>