Maven:从着色插件中排除依赖项

0yycz8jy  于 2022-12-11  发布在  Maven
关注(0)|答案(3)|浏览(252)

我看到了mvn clean install之后的下一个字符串
包括com.sun.jersey.contribs:jersey-multipart:广口瓶:1.5(在阴影广口瓶中)

**问题:**即使我已经为maven-shade-plugin添加了排除项,也无法使其不着色(见下面的代码)
我的maven阴影插件:

<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>
bbmckpt7

bbmckpt71#

根据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:*:jarcom.sun.jersey.contribs:jersey-multipart作为排除项。

<artifactSet>
                  <excludes>
                     <exclude>com.sun.jersey.contribs:jersey-multipart</exclude>
                   </excludes>
               </artifactSet>
bfnvny8b

bfnvny8b2#

在值为'provided'依赖项标记中添加scope标记它将排除该依赖项

xn1cxnb4

xn1cxnb43#

对于任何人,谁做了很多步骤,以排除一些 * 传递 * 工件从您的脂肪罐,它仍然存在,可能有两个原因:
1.这个依赖项对于其他依赖项是可传递的,而不是你做了排除的那个依赖项。因此你需要在其他地方添加排除标记(如果你的排除位于<dependencies>部分,而不是插件级)。
mvn dependency:tree对于这些搜索非常有用。
1.这些依赖项类直接从一些依赖项工件作为普通类进入您的jar,而不是传递依赖项
您的项目中有一个依赖项可能代表fat jar。您想排除的某些类作为普通类而不是可传递依赖项进入您的项目。因此Maven无法排除它。这也是Maven提供的作用域不起作用的一个原因(类仍然存在于您的jar中)。
更多详细信息,请访问:https://mchesnavsky.tech/maven-dependency-exclusion-not-working/

相关问题