[英]How to create a jar without meta-inf folder in maven?
如果我想使用jar實用程序創建一個沒有META-INF廢話的jar文件,我可以傳遞-M開關,它將:
-M do not create a manifest file for the entries
請注意,這是jar實用程序的一項功能。 如果我使用它,我將得到一個沒有META-INF文件夾並包含MANIFEST的jar,基本上只是jar類型的存檔,包含我放入的任何文件/目錄。
如何使用maven-jar-plugin執行此操作? 我需要這樣做以符合另一個過程。 (他們期望一個具有非常特定的文件/文件夾布局的jar,我不能在jar文件的根目錄下有一個META-INF文件夾。)
我有配置來正確創建jar文件,我不想搞亂另一個插件......
在maven-jar-plugin中沒有禁用創建清單文件夾的選項,但您可以禁用maven描述符目錄,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
<manifest>
<addClasspath>false</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
如果您想要刪除META-INF文件夾,可以使用maven-shade-plugin,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
您可以使用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目錄,僅包含當前項目,以便不附加依賴項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.