zoukankan      html  css  js  c++  java
  • 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>
     
    ---------------------
    作者:pengpengzhou
    来源:CSDN
    原文:https://blog.csdn.net/pengpengzhou/article/details/81743567
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    前端有未来吗?
    谈技术人员思维转变
    程序员职场背锅甩锅指南
    9 个非常实用的网络调试命令,你会用几个呢?
    nginx获取客户端请求的真实IP
    10个VSCode高效开发插件
    作为一个技术Leader,要如何去提升团队的技术氛围
    前端程序员要懂的 UI 设计知识
    【云速建站】如何实现多用户权限管理
    补习系列(10)-springboot 之配置读取
  • 原文地址:https://www.cnblogs.com/Jeely/p/10794959.html
Copyright © 2011-2022 走看看