Search code examples
javamavenmaven-assembly-plugin

Merging META-INF/services files with Maven Assembly plugin


I am looking for a way to merge META-INF/services files, e.g. META-INF/services/javax.ws.rs.ext.Providers, when building jar-with-dependencies using Maven Assembly plugin. I have found answers showing how to do that using Maven Shade plugin. Unfortunately, we are extensively using Mave Assembly plugin already and it is unclear how we could plug Maven Shade plugin...in.


Solution

  • It turns out that some versions of Maven Assembly plugin can merge these files:

    <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>