Maven学习初级入门

Maven官方网站

Apache Maven是一个软件项目管理和综合工具。基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件。

您曾经是否会遇到这些问题:
1.我们要开发一个 Java 项目,为了保证编译通过,我们会到处去寻找 jar 包。当编译通过了,在运行的时候,却发现 ClassNotFoundException,卧槽!还差 jar 包啊?再去找找吧。
2.每个 Java 项目的目录结构都没有一个统一的标准,配置文件到处都是,单元测试代码到底应该放在哪里,没有一个权威的规范。
3.可使用 Ant 做为项目构建工具,它可以自动化地完成编译、测试、打包等任务,确实为我们省了不少事儿,但编写 Ant 的 XML 脚本绝非是一件轻松的事情。
有了 Maven,以上这一切都不再是问题了。
看来Maven 要做的是两件事情:

1.统一开发规范与工具;
2.统一管理 jar 包。
一、使用前提

1.下载连接 http://maven.apache.org/download.cgi
2.配置环境变量
M2_HOME = maven根路径

Maven学习初级入门_第1张图片
maven根路径

PATH = maven根路径/bin

Maven学习初级入门_第2张图片
maven根路径/bin

3.配置好之后,我们就可以执行maven命令了
mvn -v 显示maven版本信息

Maven学习初级入门_第3张图片
maven版本信息
二、了解 Maven 仓库

使用 Maven 给我们带来的最直接的帮助,就是 jar 包得到了统一管理,那么这些 jar 包存放在哪里呢?它们就在您的本地仓库中,位于 C:\Users\用户名.m2 目录下(当然也可以修改这个默认地址)。
实际上可将本地仓库理解“缓存”,因为项目首先会从本地仓库中获取 jar 包,当无法获取指定 jar 包的时候,本地仓库会从 远程仓库(或 中央仓库)中下载 jar 包,并放入本地仓库中以备将来使用。这个远程仓库是 Maven 官方提供的,可通过 http://search.maven.org/ 来访问。这样一来,本地仓库会随着项目的积累越来越大。通过下面这张图可以清晰地表达项目、本地仓库、远程仓库之间的关系。

Maven学习初级入门_第4张图片
图解本地仓库与中央仓库

maven查找依赖的顺序

1.从本地仓库中查找所需要的依赖
2.从私有仓库中查找所需要的依赖
3.从中央仓库(http://repo.maven.apache.org/)中查找所需要的依赖

Maven学习初级入门_第5张图片
maven查找依赖的顺序
三、理解 pom.xml

pom.xml 称为 Project Object Model(项目对象模型),它用于描述整个 Maven 项目,所以也称为 Maven 描述文件。



    4.0.0

    com.smart
    smart-demo
    1.0
    war

    smart-demo Maven Webapp
    http://maven.apache.org

    
        
            junit
            junit
            3.8.1
            test
        
    

    
        smart-demo
    

从上往下简要说明:

modelVersion:这个是 POM 的版本号,现在都是 4.0.0 的,必须得有,但不需要修改。

groupId、artifactId、version:分别表示 Maven 项目的组织名、构件名、版本号,它们三个合起来就是 Maven **坐标,根据这个坐标可以在 Maven 仓库中对应唯一的 **Maven 构件。

packaging:表示该项目的打包方式,war 表示打包为 war 文件,默认为 jar,表示打包为 jar 文件。

name、url:表示该项目的名称与 URL 地址,意义不大,可以省略。

dependencies:定义该项目的依赖关系,其中每一个 dependency 对应一个 Maven 项目,可见 Maven 坐标再次出现,还多了一个 scope,表示作用域(下面会描述)。

build:表示与构建相关的配置,这里的 finalName 表示最终构建后的名称 smart-demo.war,这里的 finalName 还可以使用另一种方式来定义。

除了项目的基本信息(Maven 坐标、打包方式等)以外,每个 pom.xml 都应该包括:

Lifecycle(生命周期)

Plugins(插件)

Dependencies(依赖)

Lifecycle 是项目构建的生命周期,它包括 9 个 Phase(阶段)。

大家知道,Maven 是一个核心加上多个插件的架构,而这些插件提供了一系列非常重要的功能,这些插件会在许多阶段里发挥重要作用。
阶段插件作用:
clean
clean 清理自动生成的文件,也就是 target 目录
validate
由 Maven 核心负责 验证 Maven 描述文件是否有效
compile
compile 编译后产生target目录,里面存放的就是编译后的字节码文件
test
compiler、surefire、resources 运行测试代码
package
war 项目打包,就是生成构件包,也就是打 war 包
verify
由 Maven 核心负责,验证构件包是否有效
install
install 将构件包安装到本地仓库
site
site 生成项目站点,就是一堆静态网页文件,包括 JavaDoc
deploy
deploy 将构件包部署到远程仓库

四、使用 Maven 命令

可使用两种不同的方式来执行 Maven 命令:

方式一:mvn <插件>:<目标> [参数]

方式二:mvn <阶段>

现在我们接触到的都是第一种方式,而第二种方式才是我们日常中使用最频繁的,例如:

mvn clean:清空输出目录(即 target 目录)

mvn compile:编译源代码

mvn package:生成构件包(一般为 jar 包或 war 包)

mvn install:将构件包安装到本地仓库

mvn deploy:将构件包部署到远程仓库

执行 Maven 命令需要注意的是:必须在 Maven 项目的根目录处执行,也就是当前目录下一定存在一个名为 pom.xml 的文件。

你可能感兴趣的:(Maven学习初级入门)