Maven常見jar包沖突問題
這個(gè)問題不是很大,但是一旦報(bào)錯(cuò),很難找出原因,所以在此總結(jié)一下。
主要是jsp-api:2.1.3-b06.jar這個(gè)jar包,他的依賴坐標(biāo)如下
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1.3-b06</version>
<scope>compile</scope>
</dependency>
上邊的引用的是jsp-api:2.1.3-b06.jar,這個(gè)包還依賴著javax.servlet:3.0-b70.jar和el-api:2.1.2-b05.jar兩個(gè)jar包。

jsp-api:2.1.3-b06.jar的依賴
因?yàn)樗线叾x依賴范圍是compile,所以jsp-api:2.1.3-b06.jar以及他所依賴的兩個(gè)jar包,在運(yùn)行的時(shí)候就會(huì)被拿到部署的目錄里邊。
那Maven本身就集成了tomcat插件,在tomcat中本身也有這三個(gè)jar包。所以在部署的時(shí)候,這三個(gè)jar包就重復(fù)了,造成了jar包沖突。
因?yàn)橐蕾嚪秶莄ompile,他在編譯,測(cè)試,部署運(yùn)行的時(shí)候都參與,所以會(huì)造成jar包的沖突,那我們就把他的依賴范圍改成provided,就可以了,只在編譯和運(yùn)行的時(shí)候參與,部署運(yùn)行的時(shí)候不參與,就不會(huì)造成jar包的沖突問題了。

jar包scope依賴范圍