一、依赖
1.概念:A中的某些类 需要使用B中的某些类,则称为A依赖于B
在maven项目中,如果要使用 一个当时存在的Jar或模块,则可以通过 依赖实现(去本地仓库、远程仓库去寻找)
2.步骤:
执行mvn: 必须在pom.xml所在目录中执行
maven常见命令: (第一次执行命令时,因为需要下载执行该命令的基础环境,所以会从远程仓库下载该环境到本地仓库)
编译: ( Maven基础组件 ,基础Jar)
mvn compile --只编译main目录中的java文件
mvn test 测试
mvn package 打成jar/war
mvn install 将开发的模块 放入本地仓库,供其他模块使用 (放入的位置 是通过gav决定)
mvn clean 删除target目录(删除编译文件的目录)
运行mvn命令,必须在pom.xml文件所在目录
依赖:
A jar -> B jar
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
二、依赖的属性和步骤
1.依赖的范围(scope)、依赖的有效性
compile(默认) test provided
2.依赖排除
A.jar ->B.jar
当我们通过maven引入A.jar时,会自动引入B.jar
A.jar(x.java ,y.java,z.java) B.jar(p.java c.java i.java)
A.jar和B.jar之间的 依赖的本质:z.java ->c.java
<!-- 排除依赖 beans -->
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
</exclusions>
依赖:
a.commons-fileupload.jar commons-io.jar :虽然我们实际开发时,认为二者jar必须关联,但是maven可能不这么认为。
b.如果X.jar 依赖于Y.jar,但是在引入X.jar之前 已经存在了Y.jar,则maven不会再在 引入X.jar时 引入Y.jar
3.依赖的传递性
A.jar-B.jar->C.jar
要使 A.jar ->C.jar:当且仅当 B.jar 依赖于C.jar的范围是compile
多个maven项目(模块)之间如何 依赖: p项目 依赖于->q项目
1. p项目 install 到本地仓库
2. q项目 依赖:
<!-- 本项目 依赖于HelloWorld2项目 -->
<dependency>
<groupId>org.lanqiao.maven</groupId>
<artifactId>HelloWorld2</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
三、在Eclipse中创建maven工程
1.配置maven:
配置maven版本
配置本地仓库 : 设置settings.xml
在eclipse中编写完pom.xml依赖后,需要maven-update project
package:
resources
compile
test
package
2.maven生命周期:
生命周期和构建的关系:
生命周期中的顺序:a b c d e
当我们执行c命令,则实际执行的是 a b c
生命周期包含的阶段:3个阶段
clean lifecycle :清理
pre-clean clean post-clearn
default lifecycle :默认(常用)
site lifecycle:站点
pre-site site post-site site-deploy
再次强调:在pom.xml中增加完依赖后 需要maven - update project
3.统一项目的jdk
build path:删除旧版本,增加新版本
右键项目-属性-Project Factors -java version 改版本 (之前存在要改的版本)
通过maven统一jdk版本:
<profiles>
<profile>
<id>jdk-18</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>
</profiles>