1.配置局部的项目依赖的版本
<plugins>
<!-- 插件配置 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<!-- 源码的版本 -->
<source>1.8</source>
<!-- 编译目标版本 -->
<target>1.8</target>
<!-- 指定字符 -->
<encoding>utf-8</encoding>
</configuration>
</plugin>
</plugins>
2.配置全局的项目依赖
<!-- 依赖的编写 -->
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
3.当将项目部署到 tomcat服务器上的时候,访问呢index.jsp并不会成功。
原因是因为,在项目的lib的目录下,会有 Servlet-api.jar 和 jsp-api.jar包,但是项目目录下的lib文件夹中也有,所以会发生jar包的重复的冲突。
4.依赖的Scope属性
compile
默认的scope,表示 dependency 都可以在生命周期中使用。而且,这些dependencies 会传递到依赖的项目中。
provided
跟compile相似,但是表明了dependency 由JDK或者容器(服务器)提供,例如Servlet AP和一些Java EE APIs。这个scope 只能作用在编译和测试时,同时没有传递性。
使用这个时,不会将包打入本项目中,只是依赖过来。
使用默认或其他时,会将依赖的项目打成jar包,放入本项目的Lib里
runtime
表示dependency不作用在编译时,但会作用在运行和测试时
test
表示dependency作用在测试时,不作用在运行时。
system
跟provided 相似,但是在系统中要以外部JAR包的形式提供,maven不会在repository查找它
将依赖的Scope(作用范围) 设置为 provided即可。
5.总体回顾
原理总览:
项目目录: