如何在运行时从Maven依赖项(Jar依赖项)中排除特定的类

时间:2019-12-30 21:59:05

标签: java maven maven-plugin

如何从Maven依赖项(Jar依赖项)中排除特定的类。

我在avro-tools.jar中遇到了ObjectUtils.class的问题,该问题是在运行时选择的,没有使用commons-lang3 jar中使用的方法。导致运行时出现NoSuchMethod错误。

我想知道有什么方法可以在pom.xml中指定以从avro-tools.jar(1.9.1)版本中排除此类org.apache.commons.lang3.ObjectUtils并从commons-中进行选择。 lang3.jar(3.9版本)

1 个答案:

答案 0 :(得分:-2)

尝试使用maven-shade-plugin,它将从pom.xml生成的最终jar中删除类

注意:-无法从jar中删除特定的类。

     <profiles>
    <profile>
        <id>TestShadeProfile</id>
        <dependencies>
        <dependency>
            <groupId>org.apache.avro</groupId>
            <artifactId>avro-tools</artifactId>
            <version>1.9.1</version>
        </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>2.3</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>shade</goal>
                            </goals>
                            <configuration>
                            <filters>
                             <filter>
                                <artifact>org.apache.avro:avro-tools</artifact>
                                <excludes>
                                    <exclude>org/apache/commons/lang3/ObjectUtils*</exclude>
                                </excludes>
                             </filter>
                            </filters>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

希望它将对您有帮助

MVN清洁软件包-P TestShadeProfile