Maven
1. Maven下载
2. Maven 仓库
maven仓库:https://mvnrepository.com/
3. 坐标
3.1 什么是坐标
Maven 中的坐标用于描述仓库中资源的位置
3.2 Maven 坐标主要组成
- groupId:定义当前 Maven 项目隶属组织名称(通常是域名反写,例如:org.mybatis)
- artifactId:定义当前 Maven 项目名称(通常是模块名称,例如:CRM、SMS)
- version:定义当前项目版本号
3.3 Maven 坐标的使用
使用唯一标识,唯一性定位资源位置,通过该标识可以将资源的识别与下载工作交由机器完成
4. 仓库配置
4.1 配置本地仓库
<localRepository>C:\wzezhu\maven\repository</localRepository>
4.2 配置阿里镜像仓库
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
5. Maven 项目构建命令
Maven 构建命令使用 mvn 开头,后面添加功能参数,可以一次执行多个命令,使用空格分隔
mvn compile #编译
mvn clean #清理
mvn test #测试
mvn package #打包
mvn install #安装到本地仓库
6. Idea 版使用模板创建 Maven 工程
6.1 创建 Java 项目
- 创建 Module:
- 选择 quickstart:
- 设置 GroupId 和 ArtifactId:
- 这里默认就好,不需要改动:
- 创建好后新建 resources 文件夹:
6.2 创建 Javaweb 项目
- 创建 module:
- 选择 webapp:
- 设置 GroupId 和 ArtifactId:
- 这里默认就好,不需要改动:
- 新建 test、test/java、test/resources、main/java:
7. 添加 tomcat 插件
- 搜索tomcat maven:https://mvnrepository.com/search?q=tomcat+maven,选择进入:org.apache.tomcat.maven
- 进入 Apache Tomcat Maven Plugin :: Tomcat 7.x:
- 这里选择 2.1 版本:
- 复制到
pom.xml
中:
- xml 完整文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<!--指定pom的模型版本-->
<modelVersion>4.0.0</modelVersion>
<!--打包方式,web工程打包为war,Java工程打包为jar-->
<packaging>war</packaging>
<!--组织id-->
<groupId>com.itheima</groupId>
<!--项目id-->
<artifactId>web01</artifactId>
<!--版本号,通常为:release(完成版)或snapshot(开发版)-->
<version>1.0-SNAPSHOT</version>
<!--设置当前工程的所有依赖-->
<dependencies>
<!--具体的依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
<!--构建-->
<build>
<!--设置插件-->
<plugins>
<!--具体的插件配置-->
<plugin>
<!-- https://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat7-maven-plugin -->
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>80</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
</project>
8. 依赖传递
8.1 依赖传递冲突问题
- 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
- 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
- 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
8.2 可选依赖
可选依赖指对外隐藏当前所依赖的资源
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<optional>true</optional>
</dependency>
8.3 排除依赖
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<exclusions>
<exclusion>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
</exclusion>
</exclusions>
</dependency>