在用maven管理的项目开发过程中,服务器我们用的是tomcat,有时候我们依赖的jar包会和tomcat自带的jar包起冲突,但是不加呢,jsp页面的<script>标签又会报红,虽然不影响功能,但是看上去总是不舒服的。
这里报红呢主要是因为缺少jsp-api.jar包。但是呢因为tomcat是自带这个jar包的,你添加这个jar依赖又会包,jar包冲突的错误-Servlet.service() for servlet jsp threw exception java.lang.NullPointerException。除了jsp-api.jar会起冲突,还有一个servlet-api.jar也会起冲突,需要注意。那怎么样既能让他编译通过不报红,然后运行时又不起jar冲突呢。很简单加一句代码就行---<scope>provided</scope>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>jsp-api</artifactId>
<version>6.0.53</version>
<scope>provided</scope>
</dependency>
provided意味着打包的时候可以不用包进去,别的设施(Web Container)会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是在打包阶段做了exclude的动作。
关于scope的一些其他的一些属性,这里给大家贴一个连接,需要的可以看看: