Maven:从shade插件中排除依赖

VB_*_*VB_ 5 java packaging maven

之后我见过下一个字符串 mvn clean install

包括com.sun.jersey.contribs:jersey-multipart:jar:1.5在阴影jar中

问题:即使我已经为maven-shade-plugin添加了exlusion,我也无法使它没有阴影(参见下面的代码)

我的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>
Run Code Online (Sandbox Code Playgroud)

Dai*_*pya 8

在依赖项标记中添加范围标记,值为“提供”。它将排除这种依赖性。 类似于下面的依赖


bla*_*ild 5

根据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>
Run Code Online (Sandbox Code Playgroud)

  • `<exclude> org.apache.cxf:cxf-rt-frontend-jaxrs:*:jar </ exclude>`仍然包括org.apache.cxf:cxf-rt-frontend-jaxrs:jar:3.0.0 in阴影jar.我也试过`org.apache.cxf:cxf-rt-frontend-jaxrs` ..但它不工作 (6认同)