maven scope provided和runtime的例子说明
作者:pengpengzhou 时间:2023-04-28 02:15:00
maven scope provided和runtime例子
maven常用的scope有compile,provided,runtime,test。
complie
是默认值,表示在build,test,runtime阶段的classpath下都有依赖关系。test
表示只在test阶段有依赖关系,例如junitprovided
表示在build,test阶段都有依赖,在runtime时并不输出依赖关系而是由容器提供,例如web war包都不包括servlet-api.jar,而是由tomcat等容器来提供
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
runtime
表示在构建编译阶段不需要,只在test和runtime需要。
这种主要是指代码里并没有直接引用而是根据配置在运行时动态加载并实例化的情况。
虽然用runtime的地方改成compile也不会出大问题,但是runtime的好处是可以避免在程序里意外地直接引用到原本应该动态加载的包。
例如JDBC连接池
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
<scope>runtime</scope>
</dependency>
spring applicationContext.xml
<!-- mysql -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<!-- Connection Pool -->
<bean id="dataSource" destroy-method="close"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${ckm.jdbc.driver}" />
<property name="url" value="${ckm.jdbc.url}" />
<property name="username" value="${ckm.jdbc.username}" />
<property name="password" value="${ckm.jdbc.password}" />
<property name="initialSize" value="6" />
</bean>
maven依赖中scope的runtime和provied区别
<scope>runtime</scope>
runtime 用在 Class.forName(“com.mysql.jdbc.Driver”) 时,compile 编译时不依赖,只有运行时才会依赖。
案例:当尝试去把 compile -> runtime 后,无法编译成功,因为 runtime 只在运行时使用,编译时不引入,造成有些依赖无法加入。
<scope>provied</scope>
只有编译会使用,程序运行时不需要依赖的。
案例一:lombok 只在编译时,把 getter、setter 设置好,不需要运行时使用。
案例二:servl
et-api 只在编译时,需要引入,运行时由 tomcat 容器提供。
来源:https://blog.csdn.net/pengpengzhou/article/details/81743567
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
SpringMVC加载控制与Postmand的使用和Rest风格的引入及RestFul开发全面详解
![](https://img.aspxhome.com/file/2023/5/79815_0s.png)
Quartz.Net调度框架配置解析
为spring get请求添加自定义的参数处理操作(如下划线转驼峰)
c/c++ 标准库 bind 函数详解
Java输入输出流的使用详细介绍
![](https://img.aspxhome.com/file/2023/0/81880_0s.jpg)
java 读取网页内容的实例详解
C# 中的 is 真的是越来越强大越来越语义化(推荐)
![](https://img.aspxhome.com/file/2023/0/126130_0s.png)
Android 下载文件通知栏显示进度条功能的实例代码
Java毕业设计实战之平行志愿管理系统的实现
![](https://img.aspxhome.com/file/2023/2/74872_0s.jpg)
Unity打包代码到DLL的实现
![](https://img.aspxhome.com/file/2023/2/78152_0s.jpg)
Android仿IOS上拉下拉弹性效果的实例代码
![](https://img.aspxhome.com/file/2023/2/138542_0s.gif)
springBoot项目如何实现启动多个实例
![](https://img.aspxhome.com/file/2023/0/70500_0s.png)
C语言数据结构实现银行模拟
![](https://img.aspxhome.com/file/2023/7/109777_0s.jpg)
java长整除问题浅谈
C#推送信息到APNs的方法
C#中值类型和引用类型解析
C语言 MD5的源码实例详解
android中AutoCompleteTextView的简单用法(实现搜索历史)
![](https://img.aspxhome.com/file/2023/0/125430_0s.jpg)