[英]maven-shade-plugin: exclude a dependency and all its transitive dependencies
[英]Maven: exclude dependency from shade plugin
我在mvn clean install
之后看到了下一個字符串
包括 com.sun.jersey.contribs:jersey-multipart:jar:1.5 在陰影部分 jar
問題:即使我為 maven-shade-plugin 添加了排除項,我也無法使其不着色(參見下面的代碼)
我的 maven-shade-plugin:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<artifactSet>
<excludes>
//Here ==> <exclude>com.sun.jersey.contribs:jersey-multipart:jar</exclude>
</excludes>
</artifactSet>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>Main</Main-Class>
<Build-Number>123</Build-Number>
</manifestEntries>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
根據http://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html ,您的排除語法是錯誤的:
從最終工件中包含/排除的工件。 工件由一般形式groupId:artifactId:type:classifier的復合標識符表示。 ... 為方便起見,語法groupId等效於groupId:*:*:* , groupId:artifactId等效於groupId:artifactId:*:*並且groupId:artifactId:classifier等效於groupId:artifactId:*:classifier 。
因此,要么使用com.sun.jersey.contribs:jersey-multipart:*:jar
或com.sun.jersey.contribs:jersey-multipart
來排除。
<artifactSet>
<excludes>
<exclude>com.sun.jersey.contribs:jersey-multipart</exclude>
</excludes>
</artifactSet>
對於采取大量步驟從您的胖 jar 中排除某些可傳遞偽影並且它仍然存在的任何人,可能有兩個原因:
<dependencies>
部分,而不是插件級別)。 mvn dependency:tree
對於這些搜索非常有用。
您的項目的一個依賴項有可能代表 fat jar。您要排除的某些類作為普通類出現在您的項目中,而不是傳遞依賴項。 因此 Maven 無法排除它。 這也是 Maven 提供的 scope 不起作用的原因(類仍然存在於您的 jar 中)。
更多細節在這里: https://mchesnavsky.tech/maven-dependency-exclusion-not-working/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.