java – Maven:从JAR中排除“META-INF / maven”文件夹

我使用 Maven来构建JAR.当我检查JAR时,我在meta-inf文件夹中看到了一个maven文件夹.我希望它从构建中排除.我在pom.xml中的当前构建代码如下所示:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>Libraries</classpathPrefix>
                        <mainClass>com.company.Main</mainClass>
                    </manifest>
                    <manifestEntries>
                        <Built-By>Me</Built-By>
                    </manifestEntries>
                </archive>
                <!-- <excludes>
                    <exclude>meta-inf/maven/**</exclude>
                </excludes> -->
            </configuration>
        </plugin>
        <!-- ...more plugins... -->
    </plugins>
</build>

我读到使用排除标记允许您排除某些内容,但它不起作用.也许这只是指本地文件/文件夹? maven文件夹不是源代码的一部分,它只是由Maven添加的.

This回答有点工作但是使用了不同的工件,因此当我将它粘贴到我的pom.xml中时会生成第二个JAR.我想使用我当前的构建代码并排除maven文件夹,如上所述.如何使用maven构建规则完成?

解决方法

maven-jar-plugin使用maven-archiver来处理包装.它提供配置addMavendescriptor,认情况下为true.将其设置为false应删除meta-inf / maven目录.

...
<archive>
   <addMavendescriptor>false</addMavendescriptor>
   ....
</archive>

你可以找到参考here.

相关文章

Java中的String是不可变对象 在面向对象及函数编程语言中,不...
String, StringBuffer 和 StringBuilder 可变性 String不可变...
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序...
先说结论,是对象!可以继续往下看 数组是不是对象 什么是对...
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险...
面试题引入 这里引申出一个经典问题,看下面代码 Integer a ...