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>

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

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

相关推荐
十六年开源服务商31 分钟前
WordPress站内SEO优化最佳实践指南
大数据·开源
搞科研的小刘选手34 分钟前
【北京师范大学主办】第三届信息化教育与计算机技术国际学术会议(IECA 2026)
大数据·计算机技术·学术会议·教育学·stem
expect7g1 小时前
Paimon源码解读 -- Compaction-4.KeyValueFileStoreWrite
大数据·flink
老蒋新思维2 小时前
创客匠人 2025 万人峰会核心:AI 驱动知识产品变现革新
大数据·人工智能·网络协议·tcp/ip·创始人ip·创客匠人·知识变现
expect7g2 小时前
Paimon源码解读 -- FULL_COMPACTION_DELTA_COMMITS
大数据·后端·flink
老蒋新思维3 小时前
创客匠人峰会新视角:AI 时代知识变现的 “组织化转型”—— 从个人 IP 到 “AI+IP” 组织的增长革命
大数据·人工智能·网络协议·tcp/ip·创始人ip·创客匠人·知识变现
TMO Group 探谋网络科技4 小时前
AI Agent工作原理:如何连接数据、决策与行动,助力企业数字化转型?
大数据·人工智能·ai
Chasing Aurora4 小时前
Git 工程指引(命令+问题)
大数据·git·elasticsearch·团队开发·互联网大厂
TG:@yunlaoda360 云老大5 小时前
阿里云国际站代理商RPA跨境服务的适用场景有哪些?
大数据·阿里云·rpa
微盛企微增长小知识6 小时前
2025企业微信服务商测评:头部服务商微盛AI·企微管家技术实力与落地效果解析
大数据·人工智能·企业微信