1、Maven

Maven

Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM: Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段中插件(plugin)目标的逻辑 。

解决的问题

Maven解决了以上问题,可以把你从上面的繁琐工作中解放出来,能帮你构建工程,管理 jar包,编译代码,还能帮你自动运行单元测试,打包,生成报表,甚至能帮你部署项目,生成 Web 站点。

Maven核心功能

依赖管理

项目构建

指的是项目从编译、测试、打包、安装,部署整个过程都交给maven进行管理,这个过程称为构建。整个过程,maven可以一键执行。

Maven仓库

安装和配置

1、官网下载

2、配置环境变量

3、配置本地仓库路径

maven/conf/settings.xml

<localRepository>E:/Maven/maven-jar</localRepository>

4、配置镜像下载

由于默认服务器在国外,所以配置镜像可以提升下载速度

阿里镜像

<mirror>
        <id>alimaven</id>
        <mirrorOf>central</mirrorOf>
        <name>aliyun maven</name>
    	<!--老地址
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    	-->
    	<!--新地址-->
    	<url>https://maven.aliyun.com/repository/central/</url>
</mirror>

5、初始化仓库

mvn help:system

首次执行mvn help:system命令,Maven相关工具自动帮我们到Maven中央仓库下载缺省的或者Maven中央仓库更新的各种配置文件和类库(jar包)到Maven本地仓库中。

下载完各种文件后,mvn help:system命令会打印出所有的Java系统属性和环境变量,这些信息对我们日常的编程工作很有帮助。

Maven工程的目录结构

注意:maven工程必须按照约定的目录结构创建

常用命令

# 查看maven版本
mvn -version   
# 或者使用
mvn -v

# 初始化仓库
mvn help:sysetem

# 清除target目录
mvn clean 

# 编译项目
mvn compile

# 运行测试代码
mvn test

# 项目打包
mvn package

# maven支持组合命令使用,例如先清除target再打包
mvn clean package

# maven可以使用-Dparam=value给插件传参
# 例如可以使用-Dmaven.test.skip=true,给maven-surefire-plugin插件传参,不执行测试用例,也不编译测试用例类
mvn package -Dmaven.test.skip=true

# 发布到本地仓库
mvn install

# 发布到本地仓库及远程仓库
mvn deploy

# 生成站点文档
mvn site

Maven的生命周期

Maven内置了三个声明周期:cleandefaultsite,分别对应了三种不同的处理项目的过程。在每个生命周期的过程中都会有很多的阶段(phase),这些阶段按照既定的顺序执行来完成一个项目的构建,由于Maven的声明周期是抽象的,也就是说,阶段本身不具备处理项目的能力。所以各个阶段的工作需要由插件(plugin)来完成,一个插件通常可以完成一个或者多个阶段的工作。每个阶段的工作对应插件中的一个目标(goal)。不同的插件结合起来,就完成了整个项目的构建,一个阶段也可以绑定一个或多个插件目标。

Maven中内置了三套生命周期(依据不同的目的,定义了三种处理项目的过程)

阶段(phase)

每个生命周期由若干不同的**阶段(Phase)**组成。阶段代表了生命周期的特殊步骤。

maven的每个阶段都可以使用mvn phasename来进行命令行调用,但是用连字符(pre-*post-*、或 process-*)命名的阶段通常不会从命令行直接调用。这些阶段对构建进行排序,在构建之外生成没有用处的中间结果。

clean lifecycle

clean 生命周期包含以下阶段:

default lifecycle

default 生命周期包含了实际构建时需要执行的所有步骤,是最重要的生命周期。该生命周期包含以下阶段:

常用的maven命令,在执行的时候,其实也就是执行了一部分阶段,例如

site lifecycle

IDE集成Maven

Idea

说明: clipboard.png

Eclipse

说明: clipboard.png

说明: clipboard.png

说明: clipboard.png