You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Maven Shade Plugin排除类无效问题求助

Maven Shade Plugin排除类未生效的解决方案

以下是几个可行的排查和解决方向:

  • 过滤器未绑定目标依赖
    当前配置里的<filter>没有指定要作用的依赖坐标,Shade插件无法确定从哪个依赖中排除类。需要给过滤器添加<artifact>(或<groupId>+<artifactId>)明确目标范围:如果要全局排除所有依赖中的对应类,用通配符*:*;如果是特定依赖,就写对应的坐标。

    修改后的配置示例:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring.boot.version}</version>
            </dependency>
        </dependencies>
        <version>3.4.1</version>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>shade</goal>
                </goals>
                <configuration>
                    <filters>
                        <filter>
                            <!-- 匹配所有依赖,可替换为具体groupId:artifactId -->
                            <artifact>*:*</artifact>
                            <excludes>
                                <exclude>io/confluent/shaded/kafka/serializers/subject/**</exclude>
                            </excludes>
                        </filter>
                    </filters>
                    <mainClass>com.expediagroup.das.businessevent.CommerceBusinessBookingEventMetricCalculatorApp</mainClass>
                    <layout>JAR</layout>
                </configuration>
            </execution>
        </executions>
    </plugin>
    

    注意:统一用/分隔路径,**可匹配子目录下所有类,覆盖范围更彻底。

  • 验证类路径匹配准确性
    先确认打包后的JAR里是否真的存在这些类,执行命令:

    jar tf target/your-project-jar-name.jar | grep io.confluent.shaded.kafka.serializers.subject
    

    根据输出调整排除路径,确保和实际类的路径完全一致。

  • 适配Spring Boot打包结构
    由于你依赖了spring-boot-maven-plugin,如果是构建Spring Boot可执行JAR,建议将<layout>改为SpringBoot,避免打包结构冲突:

    <layout>SpringBoot</layout>
    
  • 清理缓存后重新构建
    执行mvn clean package,强制清理旧构建产物后重新打包,避免缓存导致配置不生效。

内容的提问来源于stack exchange,提问作者Akshay Hazari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 20:20:18