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


猜你喜欢
- 前言相信有很多小伙伴,在日常的开发中都有遇到过需要调用第三方接口的需求吧,但是自己有没有写过接口提供给第三方使用呢,常规的都是我们调用别人的
- RestTemplate设计是为了Spring更好的请求并解析Restful风格的接口返回值而设计的,通过这个类可以在请求接口时直接解析对应
- 本文实例讲述了Java中的 * 、过滤器、 * 用法。分享给大家供大家参考,具体如下:一、 * :是在面向切面编程的就是在你的servic
- 具体步骤:1.创建一个maven项目 spring-day1-constructor2.导入依赖 <prop
- 一、Thread 类了解如何使用Thread 类实现多线程之后,继续学习Thread 类实现多线程之后的相关功能及方法。1、操作线程名称的方
- 本文章向大家介绍JAVA爬取天天基金网数据,主要包括JAVA爬取天天基金网数据使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参
- 需求:将 一个容器List<Bean> 按照一定的字段进行分组,分组过后的值为特定的BEAN 里面的属性例如:假定有这样一个Be
- 前言通过前面的博客我们已经大致了解了关于Java的基本知识,而下面的几篇博客我们着重开始对于数据结构的知识进行学习,这篇博客我们就了解关于顺
- collection标签的oftype属性能否为java.util.Map基于mybatis-3.4.5.jar版本,结论是可以的。<
- 一、bean实例化——构造方法(常用)bean本质上就是对象,创建bean使用构造方法完成BookD
- SpringBoot配置https(SSL证书)最近在做微信小程序,https是必须条件仅需三步SpringBoot2.x版本对比一下这个小
- 在说ClassCastException之前,先介绍下引用类型转换;引用类型转换分为向上转型和向下转型两种; 向上转型:多态本身是
- 今天无意中发现一个圆形进度,想想自己实现一个,如下图:基本思路是这样的:1.首先绘制一个实心圆2.绘制一个白色实心的正方形,遮住实心圆3.在
- 本文实例讲述了Java使用备忘录模式实现过关类游戏功能。分享给大家供大家参考,具体如下:一.模式定义备忘录模式,在不破坏封闭的前提下,捕获一
- 使用Mybatis-Plus的SqlSessionFactory问题前些日子工作中出现一个问题,项目中使用了MybatisPlus,然后出现
- 当采用HttpClient httpClient = HttpClients.createDefault() 实例化的时候。会导致Addre
- 现公司架构大佬在项目中使用了 mybatis-generator-gui ,这是一款开源图形化 MyBatis 代码生成工具,使用起来相当的
- 一、前言二、案例需求1.编写login.html登录页面,username&password两个输入框2.使用Druid数据库连接池
- 本文实例为大家分享了Android自定义View图片按Path运动旋转的具体代码,供大家参考,具体内容如下View:/** * autho
- 什么是响应式简单来说当数据发生变化时,对数据有依赖的代码会重新执行。例如在Vue中,当我们的数据发生改变,界面上对该数据的引用组件会重新渲染