Maven的使用
settings.xml配置阿里镜像仓库
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
pom.xml jar依赖添加结构
<dependencies>
<dependency></dependency>
</dependencies>
例·:mysql依赖添加
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
模块依赖引入
模块依赖必须在<dependencyManagement></dependencyManagement>中进行
例:
父级模块
<dependencyManagement>
<dependencies>
<!-- 将自己写的模块 放到 父级pom中,以供给别的块使用-->
<dependency>
<groupId>com.qianfeng</groupId>
<artifactId>maven-demo1</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.qianfeng</groupId>
<artifactId>maven-demo2</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
子模块引入其他模块
<dependencies>
<dependency>
<groupId>com.qianfeng</groupId>
<artifactId>maven-demo1</artifactId>
</dependency>
</dependencies>
依赖传递
依赖一个jar包往往会下载相互关联的jar包这就是依赖传递,可能会造成依赖冲突问题,轻则报错,重则会导致项目无法启动。
依赖传递例:
<!--父级模块-->
<dependencyManagement>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<!-- 将自己写的模块 放到 父级pom中,以供给别的块使用-->
<dependency>
<groupId>com.qianfeng</groupId>
<artifactId>maven-demo1</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.qianfeng</groupId>
<artifactId>maven-demo2</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
<!--子模块二将子模块一加入依赖-->
<dependencies>
<dependency>
<groupId>com.qianfeng</groupId>
<artifactId>maven-demo1</artifactId>
</dependency>
</dependencies>
<dependencies>
<!--子模块三将子模块一加入依赖-->
<dependency>
<groupId>com.qianfeng</groupId>
<artifactId>maven-demo2</artifactId>
</dependency>
</dependencies>
依赖冲突问题解决
一是在在父级模块中统一依赖版本
二是将冲突的依赖通过<exclusion></exclusion>移除掉
<!--依赖移除,移除的是依赖模块中的引入的依赖包(例:移除mysql)-->
<dependencies>
<dependency>
<groupId>com.qianfeng</groupId>
<artifactId>maven-demo1</artifactId>
<exclusions>
<exclusion>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
Meaven生命周期
标识 | 周期 |
---|---|
compile | 缺省值,适用于所有阶段(测试运行,编译,运行,打包) |
provided | 打包的时候去到这个依赖,只存活在开发的测试编译环境中 |
runtime | 只在测试时使用,如mysql的驱动jar,适用于(运行,测试阶段) |
test | 只在测试时使用,使用喻(编译、测试运行)阶段,如junit.jar |
system | Maven不会在仓库中查找对应依赖,在本地磁盘目录中查找;适用于 (编译,测试运行,运行阶段) |