Maven本地仓库的配置
配置环境变量
查看是否配置成功
Maven默认的本地仓库
C:\Users\Administrator\.m2\repository
更改
conf\settings.xml
//更改仓库地址 <localRepository>修改后的仓库地址</localRepository>
//配置阿里云镜像 <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
在IDEA中使用Maven
在pom.xml中导入依赖
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
</dependencies>
Maven生命周期
Maven的核心概念
约定的目录结构
- 约定 > 配置 > 编码,意思是能基于约定的就是不进行配置
坐标
<groupId>cn.lixuan</groupId> //公司域名倒序 + 当前项目名
<artifactId>test</artifactId> //当前项目的模块名
<version>1.0-SNAPSHOT</version> //当前模块的版本
依赖管理
A jar包需要用到B jar包中的类时,我们就说A对B有依赖
直接依赖和间接依赖
依赖的范围
- compile:主程序、测试程序和在服务器运行时都需要用到
- test:仅测试程序的时候需要,例如 junit
- provided:服务器不需要,例如 servlet-api在服务器上运行时,Servlet容器会提供相关API,所以部署的时候不需要
依赖的作用范围可以概括为下图
依赖的传递性
- 存在间接依赖情况时,只有当间接依赖的jar包依赖范围为compile时才可以访问
解决jar包冲突
- 路径最短者优先
- 路径相同时先声明者优先(dependency标签配置的先后顺序)
依赖排除
为了确保程序正确,可以将有可能重复的间接依赖排除
<dependency> <!--依赖排除--> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.2</version> </dependency>
统一管理jar包版本
<properties>
<spring.version>4.0.0.RELEASE</spring.version>
</properties>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
继承
在子工程中引用父工程
<!--继承-->
<parent>
<groupId>cn.lixuan.maven</groupId>
<artifactId>Parent</artifactId>
<version>1.0-SNAPSHOT</version>
<!--指定从当前pom.xml文件出发寻找父工程的pom.xml文件的相对路径-->
<relativePath>../Parent/pom.xml</relativePath>
</parent>
在父工程中管理依赖
<!--依赖管理-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
子项目中重新指定需要的依赖,删除范围和版本号
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
聚合
- 将工程拆分为多个模块后,需要逐个操控,而使用聚合后可以批量操作
配置聚合
在总的聚合工程中配置
<!--聚合--> <modules> <module>../MakeFriend</module> <module>../OurFriends</module> <module>../HelloFriend</module> <module>../Hello</module> </modules>