如果我想使用jar实用程序创建没有META-INF废话的jar文件,则可以传递-M开关,它将:

   -M  do not create a manifest file for the entries

请注意,这是jar实用程序的功能。如果使用它,我将得到一个没有META-INF文件夹的jar文件,其中包含MANIFEST,基本上只是一个jar类型的存档,其中包含我放入的任何文件/目录。

我该如何使用maven-jar-plugin?我需要这样做以符合另一个过程。 (他们希望jar具有非常特定的文件/文件夹布局,并且jar文件的根目录中不能有META-INF文件夹。)

我已经配置好了,可以正确地创建jar文件,而且我不想弄乱另一个插件...

最佳答案

您可以使用maven-shade-plugin达到所需的效果:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.4.1</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <artifactSet>
                    <includes>
                        <include>${project.groupId}:${project.artifactId}</include>
                    </includes>
                </artifactSet>
                <filters>
                    <filter>
                        <artifact>*:*</artifact>
                        <excludes>
                            <exclude>META-INF/</exclude>
                        </excludes>
                    </filter>
                </filters>
            </configuration>
        </execution>
    </executions>
</plugin>

该配置过滤掉META-INF目录,并且仅包括当前项目,因此不附加依赖项。

09-11 04:56
查看更多