使用一些 Maven 插件重命名 jar 中的文件

Rename files inside a jar using some maven plugin

我有一个由 maven-shade-plugin 构建的 jar。 它包含 META-INF/services 多个文件。 这些文件的名称有误(因为错误 https://issues.apache.org/jira/browse/MSHADE-182)。 我想重命名这些文件。

使用 maven 执行此操作的最简单方法是什么?

肮脏的技巧,但对我有用

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.7</version>
            <executions>
                <execution>
                    <id>unpack</id>
                    <phase>package</phase>
                    <configuration>
                        <target>
                            <echo message="unjar" />
                            <unzip src="${project.build.directory}/${artifactId}-${version}.jar" dest="${project.build.directory}/unpacked/" />
                            <echo message="rename service providers in META-INF/services" />
                            <move todir="${project.build.directory}/unpacked/META-INF/services" includeemptydirs="false">
                                <fileset dir="${project.build.directory}/unpacked/META-INF/services"/>
                                <mapper type="glob" from="*" to="${shade.package}.*"/>
                            </move>
                            <echo message="jar back" />
                            <jar destfile="${project.build.directory}/${artifactId}-${version}.jar" basedir="${project.build.directory}/unpacked" />
                        </target>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>