如何解决覆盖 META-INF 中的文件
在我的项目中,我有一个依赖项,其 Jar 文件包含文件 meta-inf/org/languagetool/language-module.properties
。出于某种特殊原因,我想用我自己的版本完全替换这个文件。我用谷歌搜索,发现我可以通过简单地创建文件来将文件添加到 meta-inf
:
src/resources/meta-inf/org/languagetool/language-module.properties
只要我想添加的文件和已经存在的文件有不同的名称,这个就行。但是,如果它们具有相同的名称,则 maven-assembly-plugin 将使用依赖项中的文件,而不是使用我的文件。我该如何解决?
maven-assembly-plugin 的配置:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
<mainClass>com.github.vatbub.autoHotkeyNounReplacer.CreateAutoHotkeyScriptKt</mainClass>
</manifest>
<manifestEntries>
<Implementation-Build>20210702123553</Implementation-Build>
<Custom-Implementation-Build>20210702123553</Custom-Implementation-Build>
</manifestEntries>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
解决方法
我自己找到了答案:maven shade 插件可以更好地控制如何创建组装的 jar。因此,我将 maven-assembly-plugin 替换为具有以下配置的 maven-shade-plugin:
<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>
</execution>
</executions>
<configuration>
<filters>
<filter>
<artifact>org.languagetool:*</artifact>
<excludes>
<exclude>META-INF/org/languagetool/language-module.properties</exclude>
</excludes>
</filter>
</filters>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>jar-with-dependencies</shadedClassifierName>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>${mainClass}</Main-Class>
<!-- custom manifest entries -->
</manifestEntries>
</transformer>
</transformers>
</configuration>
</plugin>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。