maven工程servlet实例之jar包冲突解决
依賴范圍
A依賴B,需要在A的pom.xml文件中添加B的坐標,添加坐標時需要指定依賴范圍,依賴范圍包括:
compile:編譯范圍,指A在編譯時依賴B,此范圍為默認依賴范圍。編譯范圍的依賴會用在編譯、測試、運行,由于運行時需要所以編譯范圍的依賴會被打包。
provided:provided依賴只有在當JDK或者一個容器已提供該依賴之后才使用, provided依賴在編譯和測試時需要,在運行時不需要,比如:servlet api被tomcat容器提供。
runtime:runtime依賴在運行和測試系統的時候需要,但在編譯的時候不需要。比如:jdbc的驅動包。由于運行時需要所以runtime范圍的依賴會被打包。
test:test范圍依賴 在編譯和運行時都不需要,它們只有在測試編譯和測試運行階段可用,比如:junit。由于運行時不需要所以test范圍依賴不會被打包。
system:system范圍依賴與provided類似,但是你必須顯式的提供一個對于本地系統中JAR文件的路徑,需要指定systemPath磁盤路徑,system依賴不推薦使用。
在maven-web工程中測試各各scop。
測試總結:
? 默認引入 的jar包 ------- compile 【默認范圍 可以不寫】(編譯、測試、運行 都有效 )
? servlet-api 、jsp-api ------- provided (編譯、測試 有效, 運行時無效 防止和tomcat下jar沖突)
? jdbc驅動jar包 ---- runtime (測試、運行 有效 )
? junit ----- test (測試有效)
依賴范圍由強到弱的順序是:compile>provided>runtime>test
項目中添加的坐標
?
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的maven工程servlet实例之jar包冲突解决的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: maven项目概念模型图
- 下一篇: 添加tomcat7插件设置jdk编译版本