如何用Maven移除Lib中多余JAR?仅需viewservlets.jar的方案
解决BIRT Viewservlets依赖引入过多无关JAR的问题
我完全懂你的困扰——明明只想引入一个viewservlets.jar,结果打包后带进来一堆冗余的BIRT Runtime依赖,还有重复的jdk14版本BC库,WAR包体积直接膨胀,确实挺闹心的。
要一次性排除所有传递依赖、不用逐个手动删除的话,Maven有个很直接的解决方案:在你的viewservlets依赖里添加全局排除规则,具体配置如下:
<dependency> <groupId>org.eclipse.birt.runtime</groupId> <artifactId>viewservlets</artifactId> <version>4.4.1</version> <!-- 一次性排除所有传递依赖 --> <exclusions> <exclusion> <groupId>*</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency>
为什么会出现这么多冗余JAR?
org.eclipse.birt.runtime:viewservlets是BIRT Runtime套件的组成部分,它的POM文件里声明了大量传递依赖——涵盖了整个BIRT运行时所需的核心库、第三方工具类(比如你看到的BC加密库)等。Maven默认会自动下载并引入所有这些依赖,这就是Lib目录里出现30+ JAR的原因。
后续注意事项
- 配置全局排除后,打包只会引入
viewservlets.jar本身。如果后续运行时出现ClassNotFoundException,说明你实际需要它的某些依赖,这时候再针对性地添加你需要的依赖即可。 - 如果你只是想清理重复版本的JAR(比如那些jdk14的BC库),也可以通过Maven的
dependencyManagement统一管理依赖版本,避免不同依赖引入不同版本的同一款JAR,但这种方式不如全局排除直接解决“只保留目标JAR”的核心需求。
内容的提问来源于stack exchange,提问作者JAVA_CAT
相关产品推荐
相关产品推荐

