[英]Maven: Exclude “META-INF/maven” folder from JAR
我使用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>
我讀到使用exclude
標簽可以排除某些內容,但它不起作用。 也許這僅指本地文件/文件夾? maven
文件夾不是源的一部分,它只是由Maven
添加的。
這個答案是有效的,但使用了不同的工件,因此當我將它粘貼到我的pom.xml
時會生成第二個JAR
。 我想使用我當前的構建代碼並排除如上所述的maven
文件夾。 如何使用maven
構建規則來完成?
maven-jar-plugin
使用maven-archiver
來處理打包。 它提供了配置addMavenDescriptor
,默認為true
。 將其設置為false
應刪除META-INF/maven
目錄。
...
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
....
</archive>
您可以在此處找到參考。
您可以使用 maven shade 插件創建 jar 並使用 pom.xml 文件中的以下配置排除 maven 文件夾:
<profile>
<id>shade</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<excludes>
<exclude>META-INF/**</exclude>
</excludes>
</filter>
</filters>
</configuration>
</executions>
...
</profile>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.