如何通过Maven配置将所有依赖统一放入JAR包内的单独libs目录
解决方案
完全可以实现该目录结构调整,你只需要修改maven-shade-plugin的重定向配置即可:
- 找到pom.xml中maven-shade-plugin的配置块,在
<relocations>节点下为所有第三方依赖包新增重定向规则 - 不要为你自己的项目包
com.feniksovich添加任何重定向规则,保证原有路径不变
示例配置如下:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.5.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <relocations> <!-- 重定向Hikari依赖 --> <relocation> <pattern>com.zaxxer</pattern> <shadedPattern>libs.com.zaxxer</shadedPattern> </relocation> <!-- 重定向commons-io依赖 --> <relocation> <pattern>org.apache</pattern> <shadedPattern>libs.org.apache</shadedPattern> </relocation> <!-- 重定向slf4j依赖 --> <relocation> <pattern>org.slf4j</pattern> <shadedPattern>libs.org.slf4j</shadedPattern> </relocation> <!-- 重定向jedis依赖 --> <relocation> <pattern>redis.clients</pattern> <shadedPattern>libs.redis.clients</shadedPattern> </relocation> </relocations> </configuration> </execution> </executions> </plugin>
配置生效后重新执行mvn package命令,生成的JAR包就会完全匹配你需要的目录结构,同时插件会自动修改你代码中对这些第三方类的引用路径,不会出现类找不到的问题。
内容的提问来源于stack exchange,提问作者Feniksovich
相关产品推荐
相关产品推荐

