首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖META-INF中的文件

覆盖META-INF中的文件
EN

Stack Overflow用户
提问于 2021-07-02 20:38:05
回答 1查看 106关注 0票数 0

在我的项目中,我有一个依赖项,它的Jar-file包含文件META-INF/org/languagetool/language-module.properties。由于特殊的原因,我想用我自己的版本完全替换这个文件。我用谷歌搜索了一下,发现只需像这样创建文件就可以将文件添加到META-INF中:

代码语言:javascript
复制
src/resources/META-INF/org/languagetool/language-module.properties

只要我想要添加的文件和已经存在的文件具有不同的名称,就可以使用此方法。但如果它们具有相同的名称,maven-assembly-plugin将使用依赖项中的文件,而不是使用我的文件。我怎么才能修复它呢?

maven-assembly-plugin的配置:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2021-07-02 21:03:37

我自己找到了答案: maven shade插件可以更好地控制如何创建组装好的jar。因此,我将maven-assembly-plugin替换为maven-shade-plugin,配置如下:

代码语言:javascript
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68225365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档