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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 19:22:36