maven依賴關(guān)系中的<scope>provided</scope>使用詳解
關(guān)于maven依賴中的<scope>provided</scope>使用
scope的其他參數(shù)如下:
compile
默認(rèn)的scope,表示 dependency 都可以在生命周期中使用。而且,這些dependencies 會(huì)傳遞到依賴的項(xiàng)目中。適用于所有階段,會(huì)隨著項(xiàng)目一起發(fā)布
provided
跟compile相似,但是表明了dependency 由JDK或者容器提供,例如Servlet AP和一些Java EE APIs。這個(gè)scope 只能作用在編譯和測(cè)試時(shí),同時(shí)沒有傳遞性。
runtime
表示dependency不作用在編譯時(shí),但會(huì)作用在運(yùn)行和測(cè)試時(shí),如JDBC驅(qū)動(dòng),適用運(yùn)行和測(cè)試階段。 test表示dependency作用在測(cè)試時(shí),不作用在運(yùn)行時(shí)。 只在測(cè)試時(shí)使用,用于編譯和運(yùn)行測(cè)試代碼。不會(huì)隨項(xiàng)目發(fā)布。 system跟provided 相似,但是在系統(tǒng)中要以外部JAR包的形式提供,maven不會(huì)在repository查找它
今天開發(fā)web的時(shí)候,需要用到servlet-api,于是在pom.xml中添加依賴
<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>3.0-alpha-1</version> </dependency>
通過插件啟動(dòng)tomcat的時(shí)候,報(bào)錯(cuò),里面有一段是這樣的:
Caused by: java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/catalina/loader/WebappClassLoader) previously initiated loading for a different type with name "javax/servlet/ServletContext" at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
產(chǎn)生的原因是:tomcat中也有servlet-api包,這樣,發(fā)生了沖突
解決方法:添加<scope>provided</scope>,因?yàn)閜rovided表明該包只在編譯和測(cè)試的時(shí)候用,所以,當(dāng)啟動(dòng)tomcat的時(shí)候,就不會(huì)沖突了,完整依賴如下:
<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>3.0-alpha-1</version> <scope>provided</scope> </dependency>
到此這篇關(guān)于maven依賴關(guān)系中的<scope>provided</scope>使用詳解的文章就介紹到這了,更多相關(guān)maven依賴<scope>provided</scope>內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
到此這篇關(guān)于maven依賴關(guān)系中的<scope>provided</scope>使用詳解的文章就介紹到這了,更多相關(guān)maven依賴<scope>provided</scope>內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java中TCP實(shí)現(xiàn)回顯服務(wù)器及客戶端
本文主要介紹了java中TCP實(shí)現(xiàn)回顯服務(wù)器及客戶端,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
SpringBoot從配置文件中獲取屬性的四種方法總結(jié)
這篇文章主要介紹了SpringBoot從配置文件中獲取屬性的四種方法總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
Netty分布式ByteBuf使用的底層實(shí)現(xiàn)方式源碼解析
這篇文章主要為大家介紹了Netty分布式ByteBuf使用底層實(shí)現(xiàn)方式源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03
mybatis Interceptor對(duì)UpdateTime自動(dòng)處理的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于使用mybatis Interceptor對(duì)UpdateTime自動(dòng)處理的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧2018-12-12
JAVA 數(shù)據(jù)結(jié)構(gòu)鏈表操作循環(huán)鏈表
這篇文章主要介紹了JAVA 數(shù)據(jù)結(jié)構(gòu)鏈表操作循環(huán)鏈表的相關(guān)資料,需要的朋友可以參考下2016-10-10
java 數(shù)據(jù)結(jié)構(gòu)之刪除鏈表中的元素實(shí)例代碼
這篇文章主要介紹了java 數(shù)據(jù)結(jié)構(gòu)之刪除鏈表中的元素實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-01-01

