一、依赖的范围、依赖的有效性
<scope>test</scope>
scope中指定依赖的范围 compile(默认)、test 、provided
* compile,缺省值,适用于所有阶段,会随着项目一起发布。
* provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
* runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
* test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
* system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
2、依赖排除
如以下例子
A.jar (x.java , y.jar , z.java) B.jar(m.java , n.java ,o.java)
A与B之间的依赖本质 z.java -> n.java (比如z.java中调用了n.java的n类)
<dependencies>
<dependency>
<groupId>B</groupId>
<artifactId>b</artifactId>
<version>1.0</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>c</groupId>
<artifactId>c</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
3、依赖的传递性
A.jar -> B.jar -> C.jar
要使A.jar 依赖 C.jar : 当且仅当 B.jar 依赖于 C.jar 的范围是compile
4、创建多个依赖项目
创建 多个maven项目之间的依赖:P项目 依赖于 Q项目
a、将Q项目打包 ,并install 到本地仓库。
b、在P项目中,加入依赖声明
<dependencies>
<dependency>
<groupId>Q</groupId>
<artifactId>Q</artifactId>
<version>0.0.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
5、依赖原则
a、最知路径优先原则
b、路径相同
i:如果在同一个pom.xml中有两个相同的依赖,则后声明的会覆盖前面声明的依赖
ii: 如果在不同的pom.xml中有两个相同的依赖,则先声明的优先。
6、在pom.xml中,修改jdk的版本
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>