Maven Shade Plugin未打包同组依赖类致运行时异常求助
问题排查与修复方案
1. 依赖ArtifactId拼写错误
你依赖的目标组件artifactId是project-foo,但在依赖声明里误写为example-foo,导致Maven无法正确定位到目标依赖包。
修正后的依赖声明:
<dependency> <groupId>com.example.things</groupId> <artifactId>project-foo</artifactId> <version>1.2.345-SNAPSHOT</version> </dependency>
2. 依赖Scope配置错误
你给该依赖设置了<scope>provided</scope>,这个Scope的作用是标记“依赖由运行环境提供,无需打包进最终Jar”,所以即使Shade插件配置了包含规则,也不会将该依赖的类复制到Jar中。如果你的运行环境不会自动提供这个依赖,必须将Scope改为默认的compile(可省略不写)。
3. Shade插件配置的补充检查
虽然你的Shade插件已经配置了<include>com.example.things:project-foo</include>,但前面两个错误会导致插件找不到对应的依赖包,修复前两个问题后这个配置才能生效。另外,如果你保留了<minimizeJar>true</minimizeJar>,要确保你的代码确实直接引用了project-foo中的类,否则Minimize功能会自动剔除未被引用的类。
内容的提问来源于stack exchange,提问作者Damien Verlynde
相关产品推荐
相关产品推荐

