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>

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

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

相关推荐
数据猿5 小时前
【金猿CIO展】上海虹迪物流科技有限公司董事长兼CIO张鹏飞:聚焦数字化核心——物流供应链的的智慧演进之路
大数据·科技
deepdata_cn6 小时前
“深数据” vs “大数据”
大数据·bigdata·深数据·deepdata
数字化转型20258 小时前
SAP Signavio 在风机制造行业的深度应用研究
大数据·运维·人工智能
飞舞花下8 小时前
MAVEN私有仓库配置-Nexus私有仓库
xml·java·maven
sheji34169 小时前
【开题答辩全过程】以 基于大数据的城市租房数据的分析与可视化为例,包含答辩的问题和答案
大数据
while(1){yan}10 小时前
使用HuTool实现验证码
spring boot·spring·java-ee·maven
Biehmltym12 小时前
【AI】09AI Agent LLM → Streaming → Session 记录 的完整链路
大数据·人工智能·elasticsearch
Data-Miner13 小时前
精品PPT | 某制造集团灯塔工厂解决方案
大数据·人工智能·制造
小湘西13 小时前
Elasticsearch 的一些默认配置上下限
java·大数据·elasticsearch
`林中水滴`14 小时前
SeaTunnel vs Flume
大数据·flume