什么是Maven
Maven是一个管理项目的工具(项目对象模型POM)
Maven的安装和配置
官网下载https://maven.apache.org/download.cgi
bin.zip压缩包,src.zip是源码压缩包。
将apach-maven–bin.zip解压到D盘。
配置环境变量:MAVEN_HOME,
path中添加到bin目录
cmd中测试 mvn -version
Maven HelloWord实现
使用maven编译java代码,注意目录结构。
创建D:/HelloWord/src/main/java/目录
main目录下创建一个java目录,之后在这个目录中写java代码
test目录下创建一个java目录,之后在这个目录中写java测试代码。
创建pom.xml文件
项目HelloWord,java代码写在相应的目录下,使用cmd进入HelloWord目录下
pom.xml文件
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>hz.HelloWorld</groupId>
<artifactId>HelloWorld</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency><!--jar包依赖,直接在远程仓库中找就可以了-->
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.3.1</version>
</dependency>
</dependencies>
</project>
target目录是编译后生成的目录
pom.xml文件声明哪个项目(org.junit.jupiter),项目的哪个模块(junit-jupiter-api),版本号(5.3.1)
mvn compile命令进行编译。
常用的Maven命令
modelVersion:POM 模型版本 4.0.0 固定
groupId:一般指某个公司或者某个组织的某个项目 比如 ------------------------------------------org.springframework
artifactId:一般指某个具体项目的某个具体模块 比如 spring-context Version:项目的版本 Maven 常见命令
Mvn compile 编译
Mvn clean 清空
Mvntest 测试
Mvnpackage 打包
Mvninstall 把项目安装到本地仓库
Mvn 远程仓库地址:http://mvnrepository.com/
Maven修改本地仓库的位置
默认是C:\Users\houzhengming.m2\repository
修改配置文件D:\maven\apache-maven-3.6.3\conf\settings.xml 文件
加入
Eclipse使用Maven
打开 Eclipse,点击菜单 Help->Install NewSoftware 点击 Add 按钮
Name:m2e location:http://download.eclipse.org/technology/m2e/releases
(由于最新版的 Eclipse 代号 Mars,已经直接集成了 Maven,所以无需在安装 m2eclipse 插件)
1.配置本地仓库
settings.xml文件在D:\maven\apache-maven-3.6.3\conf\settings.xml 拷贝出来,修改仓库位置,eclipse自动识别文件里面的仓库位置
2 配置下载jar包源码
3.创建Maven工程,默认使用的是JRE,手动改成JDK,不然Maven会报错
4.创建Maven工程
File–>New–>Maven Project–>Next.。
!](https://img-blog.csdnimg.cn/20200220103321996.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDE0MjAzMg==,size_16,color_FFFFFF,t_70)
Maven的聚合和继承
聚合:将一个项目的两个模块合并成一个,实际上就是创建C,将A,B合并,运行C就是同时运行A,B。
创建Maven工程C
pom.xml文件
继承:继承父类,也就是继承pom.xml文件,父类中的pom.xml写完了依赖,在子类中的pom.xml文件中用到的话就不用写了,不用写版本了
父类pom.xml文件
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.java1234.user</groupId>
<artifactId>user-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<!--统一管理:spring-version随便写,引用的时候对应起来就行-->
<spring-version>4.1.7.RELEASE</spring-version>
</properties>
<!--依赖管理器-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring-version}</version>
</dependency>
</dependencies>
<dependencyManagement>
子类pom.xml文件
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 继承 -->
<parent>
<groupId>com.java1234.user</groupId>
<artifactId>user-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../user-parent/pom.xml</relativePath>
</parent>
<artifactId>user-dao</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version><!--这个就不用写了-->
</dependency>
<dependencies>
Maven远程仓库的配置文件
$M2_HOME/lib/maven-model-builder-3.3.3.jar
文件:org\apache\maven\model\pom-4.0.0.xml
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<!--远程仓库的地址-->
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
Maven依赖特性
Maven的依赖范围
classpath 分为三种:编译 classpath, 测试 classpath, 运行 classpath
Scope 选项如下: Compile:编译依赖范围。默认就是 compile。在编译,测试,运行都有效;
Test:测试依赖范围。仅测试有效; 例如 JUnit;
Provided:已提供依赖范围。编译,测试有效,运行时候无效。例如 servlet-api。
System:系统依赖范围。(了解即可)使用 system 范围的依赖必须通过 sytemPath 指定依赖文件的路径。
Import:导入依赖范围。(了解即可)使用 dependencyManagement 时候,可以导入依赖配置。
Maven的生命周期
Maven 生命周期简介:Maven 通过插件的方式完成一系列过程来实现功能。
Maven 拥有三套独立的生命周期:
- Clean 清理项目
- Default 构建项目
- Site 建立项目站点(了解即可)
Maven中的路径问题classpath
classpath:表示src/main/resources目录下,也可以表示src/main/java目录下。优先级:resources > java