maven Assembly 插件未附加/合并 META-INF/services/ spi.AutoDiscoverable

问题描述 投票:0回答:1

我们正在使用,带有依赖项的 jar 构建将具有 META-INF/services/org.glassfish.jersey.internal.spi.AutoDiscoverable,值为“a.b.client.sdk.common.client.AutoConfigService”

基本上它也应该具有“org.glassfish.jersey.jackson.internal.JacksonAutoDiscoverable”的值

看起来 org.glassfish.jersey.internal.spi.AutoDiscoverable 的键没有发生附加或合并值。

我们如何才能使其同时具有这两个值?

以下是我们使用插件的方式。

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.1.1</version>

    <executions>
      <execution>
        <id>assemble-all</id>
        <phase>package</phase>
        <goals>
          <goal>single</goal>
        </goals>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
          <archive>
            <manifestEntries>
              <Multi-Release>true</Multi-Release>
            </manifestEntries>
          </archive>
        </configuration>
      </execution>
      <execution>
        <id>assemble-dist-zip</id>
        <phase>verify</phase>
        <goals>
          <goal>single</goal>
        </goals>
        <configuration>
          <appendAssemblyId>false</appendAssemblyId>
          <descriptors>
            <descriptor>src/main/assembly/app-zip-assemble.xml</descriptor>
          </descriptors>
        </configuration>
      </execution>
    </executions>
  </plugin>

如何用maven插件实现,所以我的期望是, META-INF/services/org.glassfish.jersey.internal.spi.AutoDiscoverable 以保留来自不同工件的值,如下所示。

a.b.client.sdk.common.client.AutoConfigService org.glassfish.jersey.jackson.internal.JacksonAutoDiscoverable

java maven jersey maven-assembly-plugin
1个回答
0
投票

您可以使用这样的解决方法:

创建一个名为 ${PROJECT_DIR}/AutoDiscoverable.txt 的文件,其中包含您想要的内容:

a.b.client.sdk.common.client.AutoConfigService org.glassfish.jersey.jackson.internal.JacksonAutoDiscoverable

然后使用以下部分运行 mvn package 而不是 pom.xml 中的程序集插件:

这将从包中排除原始 org.glassfish.jersey.internal.spi.AutoDiscoverable 文件,并将其替换为您手动创建的文件。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.2.4</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <filters>
                            <filter>
                                <artifact>*:*</artifact>
                                <excludes>
                                    <exclude>META-INF/services/org.glassfish.jersey.internal.spi.AutoDiscoverable</exclude>
                                </excludes>
                            </filter>
                        </filters>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
                                <resource>META-INF/services/org.glassfish.jersey.internal.spi.AutoDiscoverable</resource>
                                <file>AutoDiscoverable.txt</file>
                            </transformer>
                        </transformers>

                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
© www.soinside.com 2019 - 2024. All rights reserved.