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>

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

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

相关推荐
24k小善1 小时前
FlinkSql入门与实践
java·大数据·flink·云计算
Leo.yuan1 小时前
产销协同的作用是什么?又如何对各部门发挥作用?
大数据·信息可视化·数据分析·需求分析·企业数字化
帅帅的Python1 小时前
2015-2023 各省 GDP 数据,用QuickBI 进行数据可视化——堆叠图!
大数据·人工智能
数据与人工智能律师1 小时前
正确应对监管部门的数据安全审查
大数据·网络·数据库·人工智能·区块链
小布不吃竹2 小时前
Maven的概念与初识Maven
java·maven
中东大鹅2 小时前
Maven进阶
java·maven
Aloudata技术团队2 小时前
Aloudata Agent 36 问,深度解惑!
大数据·数据分析·数据可视化
星云ai2 小时前
2025年的营销趋势-矩阵IP
大数据·人工智能
TracyCoder1232 小时前
ElasticSearch深入解析(三):Elasticsearch 7的安装与配置、Kibana安装
大数据·elasticsearch·jenkins
淡蓝色_justin2 小时前
发布库到Maven Central完整指南
gradle·maven