Maven依賴中scope的runtime和provied的區(qū)別及說明
Maven依賴中scope的runtime和provied的區(qū)別
<scope>runtime</scope>
runtime 用在 Class.forName(“com.mysql.jdbc.Driver”) 時,compile 編譯時不依賴,只有運行時才會依賴。
案例:
當嘗試去把 compile -> runtime 后,無法編譯成功,因為 runtime 只在運行時使用,編譯時不引入,造成有些依賴無法加入。
<scope>provied</scope>
只有編譯會使用,程序運行時不需要依賴的。
案例一:
lombok 只在編譯時,把 getter、setter 設(shè)置好,不需要運行時使用。
案例二:
servlet-api 只在編譯時,需要引入,運行時由 tomcat 容器提供。
maven scope provided和runtime的例子
maven常用的scope有compile,provided,runtime,test。
complie
是默認值,表示在build,test,runtime階段的classpath下都有依賴關(guān)系。
test
表示只在test階段有依賴關(guān)系,例如junit
provided
表示在build,test階段都有依賴,在runtime時并不輸出依賴關(guān)系而是由容器提供,例如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
表示在構(gòu)建編譯階段不需要,只在test和runtime需要。
這種主要是指代碼里并沒有直接引用而是根據(jù)配置在運行時動態(tài)加載并實例化的情況。
雖然用runtime的地方改成compile也不會出大問題,但是runtime的好處是可以避免在程序里意外地直接引用到原本應該動態(tài)加載的包。
例如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>
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
idea集成shell運行環(huán)境以及shell輸出中文亂碼的解決
這篇文章主要介紹了idea集成shell運行環(huán)境以及shell輸出中文亂碼的解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08Java使用組件編寫窗口實現(xiàn)網(wǎng)上文件下載
這篇文章主要為大家詳細介紹了Java使用組件編寫窗口實現(xiàn)網(wǎng)上文件下載的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02如何通過Java實現(xiàn)PDF轉(zhuǎn)高質(zhì)量圖片
在Java中,將PDF文件轉(zhuǎn)換為高質(zhì)量的圖片可以使用不同的庫,其中最常用的庫之一是?Apache?PDFBox,下面我們就來看看這個庫的具體使用吧2024-10-10手擼一個Spring?Boot?Starter并上傳到Maven中央倉庫
本文主要介紹了手擼一個Spring?Boot?Starter并上傳到Maven中央倉庫,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-05-05Java使用動態(tài)規(guī)劃算法思想解決背包問題
背包問題(Knapsack problem)是一種組合優(yōu)化的NP完全問題。問題可以描述為:給定一組物品,每種物品都有自己的重量和價格,在限定的總重量內(nèi),我們?nèi)绾芜x擇,才能使得物品的總價格最高2022-04-04