1.使用原因
有些jar只会在某些特定时期才会用到,项目发布后根本不会用到这些jar包,所以把这些jar打入最终的发布包中是不合理的。如junit只会在测试期用到,肯定不应该将它打入最终的发布包。解决方法如下:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
再如,我们开发j2ee的时候会用到servlet-api,它对已主源码和测试源码都是必要的,因为我们的代码中会引入Servlet-api的包,但是在打包的时候,将它放入war包就会有问题,因为web容器会提供servlet-api,如果我们再将其打包就会造成依赖冲突。解决方法如下:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
将依赖范围设置为provided,就意味着该依赖对于主源码classpath,以及测试源码classpath可用,但是不会被打包,这正是servlet-api需要的
2.依赖范围解释