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阶段有依赖关系,例如junit

  • provided表示在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(&ldquo;com.mysql.jdbc.Driver&rdquo;) 时,compile 编译时不依赖,只有运行时才会依赖。

案例:当尝试去把 compile -> runtime 后,无法编译成功,因为 runtime 只在运行时使用,编译时不引入,造成有些依赖无法加入。

<scope>provied</scope>

只有编译会使用,程序运行时不需要依赖的。

案例一:lombok 只在编译时,把 getter、setter 设置好,不需要运行时使用。

maven scope provided和runtime的例子说明

案例二:servl

et-api 只在编译时,需要引入,运行时由 tomcat 容器提供。 

来源:https://blog.csdn.net/pengpengzhou/article/details/81743567

标签:maven,scope,provided,runtime
0
投稿

猜你喜欢

  • SpringMVC加载控制与Postmand的使用和Rest风格的引入及RestFul开发全面详解

    2021-10-14 16:45:44
  • Quartz.Net调度框架配置解析

    2021-10-13 01:35:02
  • 为spring get请求添加自定义的参数处理操作(如下划线转驼峰)

    2021-12-04 13:01:43
  • c/c++ 标准库 bind 函数详解

    2023-03-29 09:10:39
  • Java输入输出流的使用详细介绍

    2023-08-01 22:21:22
  • java 读取网页内容的实例详解

    2023-11-27 22:38:11
  • C# 中的 is 真的是越来越强大越来越语义化(推荐)

    2021-06-24 11:55:12
  • Android 下载文件通知栏显示进度条功能的实例代码

    2023-09-01 19:42:50
  • Java毕业设计实战之平行志愿管理系统的实现

    2023-09-12 14:34:23
  • Unity打包代码到DLL的实现

    2022-06-28 08:38:17
  • Android仿IOS上拉下拉弹性效果的实例代码

    2023-08-26 06:49:18
  • springBoot项目如何实现启动多个实例

    2021-09-22 00:13:47
  • C语言数据结构实现银行模拟

    2023-04-16 17:25:49
  • java长整除问题浅谈

    2023-05-22 06:06:23
  • C#推送信息到APNs的方法

    2023-05-29 05:20:59
  • C#中值类型和引用类型解析

    2023-02-10 22:41:33
  • C语言 MD5的源码实例详解

    2022-12-22 05:37:16
  • android中AutoCompleteTextView的简单用法(实现搜索历史)

    2023-01-08 18:33:01
  • Java String不可变性实现原理解析

    2023-11-09 23:15:53
  • C#中把任意类型的泛型集合转换成SQLXML数据格式的实例

    2022-12-24 08:16:21
  • asp之家 软件编程 m.aspxhome.com