Maven工程中排除依赖打包的两种方式

在Maven工程中,我们常需要依赖各种第三方库完成项目开发,但在最终交付时,往往不希望将这些依赖本身打包到产品中,以减小发布包体积。此时,可以通过以下两种方式实现:

使用provided

这适用于那些编译时需要,但运行时会由服务器或运行环境提供的库,典型的如Servlet API、JDBC驱动等。可以像下面这样配置:

xml 复制代码
<dependency>
 <groupId>groupId</groupId>
 <artifactId>artifactId</artifactId>
 <version>version</version>
 <scope>provided</scope> 
</dependency>

这种方式编译通过且可以写代码引用,但不会被打入最终包中。

使用true

这表示一个完全可选的依赖,默认是不参与打包的,只有手动设置了才会被包含在内。例如:

xml 复制代码
<dependency>
 <groupId>groupId</groupId>
 <artifactId>artifactId</artifactId>
 <version>version</version>
 <optional>true</optional>
</dependency>

两者都可以实现排除依赖打包,但强调编译必须而运行时不需要,完全是可选依赖。合理运用可以减小项目发布包体积。

两者的共同点是都可以排除依赖的打包,不同在于 表示完全可选,而 表示编译必须但运行时由外部容器提供。

相关推荐
琅琊榜首20204 分钟前
AI生成脑洞付费短篇小说:从灵感触发到内容落地
大数据·人工智能
TTBIGDATA21 分钟前
【knox】User: knox is not allowed to impersonate admin
大数据·运维·ambari·hdp·trino·knox·bigtop
紧固视界1 小时前
了解常见紧固件分类标准
大数据·制造·紧固件·上海紧固件展
无忧智库1 小时前
跨国制造企业全球供应链协同平台(SRM+WMS+TMS)数字化转型方案深度解析:打造端到端可视化的“数字供应链“(WORD)
大数据
彬sir哥2 小时前
android studio如何把.gradle从C盘移到D盘
android·gradle·maven·android studio
乐迪信息3 小时前
乐迪信息:AI防爆摄像机在船舶监控的应用
大数据·网络·人工智能·算法·无人机
Hernon3 小时前
AI智能体 - 探索与发现 Clawdbot >> Moltbot
大数据·人工智能·ai智能体·ai开发框架
Mikhail_G3 小时前
Mysql数据库操作指南——排序(零基础篇十)
大数据·数据库·sql·mysql·数据分析
7***n754 小时前
2026年GEO深度评测:AI时代营销新基建的实践者与分化
大数据·人工智能
你才是臭弟弟4 小时前
Amazon S3 和 MinIO (数据湖的选型)
大数据·云原生