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
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM