Maven基础

1.1什么是Maven?

1.1.1什么是Maven

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

1.1.1Maven能解决什么问题?

构建工程,管理jar包,编译代码,自动运行单元测试,打包,生成报表,部署项目,生成Web站点。

1.2 Maven的两个精典作用

1.2.1 Maven的依赖管理

maven工程中不直接将jar包导入到工程中,而是通过在pom.xml文件中添加所需jar包的坐标,需要用到jar包的时候根据这些坐标,在专门用于存放jar包的仓库中中找到这些jar包,再把这些jar包拿去运行

1.2.2项目的一键构建

什么是构建?
指的是项目从校验-初始化-编译-测试-打包-集成测试-安装-部署整个过程都交给maven进行管理,这个过程称为构建。(从源码到成品的整个过程。)
一键构建
指的是整个构建过程,使用maven一个命令可以轻松完成整个工作。
Maven的依赖管理的原理图

2.1 Maven的使用

2.1.1 Maven软件的安装

  1. 下载
  2. 解压
    解压后的软件目录如下:
    在这里插入图片描述
    bin:存放了 maven 的命令,比如我们前面用到的 mvn tomcat:run
    boot:存放了一些 maven 本身的引导程序,如类加载器等
    conf:存放了 maven 的一些配置文件,如 setting.xml 文件
    lib:存放了 maven 本身运行所需的一些 jar 包
    至此我们的 maven 软件就可以使用了,前提是你的电脑上之前已经安装并配置好了 JDK。
  3. 配置环境变量
  4. 测试通过mvn -v命令测试
    在这里插入图片描述
  5. 修改配置

2.2 Maven的仓库

2.2.2 仓库的分类

  1. 本地仓库:用来存储从远程仓库或中央仓库下载的插件和jar包,项目使用一些插件或jar包,优先从本地仓库查找。可以再,conf/settings.xml中修改本地仓库的位置

  2. 远程仓库:如果本地需要插件或者jar包,本地仓库没有,默认去远程仓库下载。远程仓库可以再互联网内也可以再局域网内。

  3. 中央仓库:在 maven 软件中内置一个远程仓库地址 ,服务于整个互联网
    maven仓库的种类和关系

Maven 依赖搜索顺序

当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:
步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中以备将来引用。
步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。

Maven 阿里云(Aliyun)仓库

步骤1 第一步:修改 maven 根目录下的 conf 文件夹中的 setting.xml 文件,在 mirrors 节点上,添加内容如下:

<mirrors>
...
<mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>        
</mirror>
</mirrors>

# 2.3 Maven的目录结构

Maven 提倡使用一个共同的标准目录结构,Maven 使用约定优于配置的原则,大家尽可能的遵守这样的目录结构。如下所示:

2.3.1 Maven 工程的目录结构

在这里插入图片描述
作为一个 maven 工程,它的 src 目录和 pom.xml 是必备的。
进入 src 目录后,我们发现它里面的目录结构如下:
在这里插入图片描述

目录目的
src/main/java存放项目的java源代码
src/main/resources存放项目资源文件,如 spring, hibernate 配置文件
src/test/java存放所有单元测试.java 文件,如 JUnit 测试类
src/test/resources测试资源文件
src/main/webapp/WEB-INFweb应用文件目录,web项目的信息,比如存放web.xml、本地图片、jsp视图页面
target打包输出目录
target/classes编译输出目录
target/test-classes测试编译输出目录

注意:如果是普通的 java 项目,那么就没有 webapp 目录。

2.4 Maven的生命周期

阶段处理描述
验证 validate验证项目验证项目是否正确且所有信息是可用的
初始化 initialize执行编译源代码编译在此阶段完成
编译compile执行编译源代码编译在此阶段完成
测试Test 测试使用适当的单元测试框架(例如JUnit)运行测试
package 打包打包创建JAR/WAR包如在pom.xml中定义提及的包
集成测试 integrationTest集成测试处理和部署项目到可以运行集成测试环境中。
安装 install安装安装打包的项目到本地仓库,以供其他项目使用
部署 deplop部署拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程

为了完成 default 生命周期,这些阶段(包括其他未在上面罗列的生命周期阶段)将被按顺序地执行。
说明:当一个阶段通过 Maven 命令调用时,例如 mvn compile,只有该阶段之前以及包括该阶段在内的所有阶段会被执行。
不同的 maven 目标将根据打包的类型(JAR / WAR / EAR),被绑定到不同的 Maven 生命周期阶段。
Maven 有以下三个标准的生命周期:
1.清理生命周期 :在进行真正的构建之前进行一些清理工作。
2.默认生命周期 :构建的核心部分,编译,测试,打包,部署等等。
3.站点生命周期 :生成项目报告,站点,发布站点

2.5 Maven的坐标

定位

groupId 公司的域名反写 com.woniuxy.cq

artifactId 项目名 rocket

version 版本 SNAPSHOT(快照版本) rc RELEASE GA milestone

 <groupId>com.woniuxy.build</groupId>
  <artifactId>demo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

2.6 Maven的依赖管理

Maven 一个核心的特性就是依赖管理。当我们处理多模块的项目(包含成百上千个模块或者子项目),模块间的依赖关系就变得非常复杂,管理也变得很困难。针对此种情形,Maven 提供了一种高度控制的方法。

2.7 Maven的常用命令

  1. compile 是 maven 工程的编译命令,作用是将 src/main/java 下的文件编译为 class 文件输出到 target目录下。
    cmd 进入命令状态,执行 mvn compile,如下图提示成功:
    在这里插入图片描述
    查看 target 目录,class 文件已生成,编译完成。
    在这里插入图片描述
  2. test 是 maven 工程的测试命令 mvn test,会执行 src/test/java 下的单元测试类。
    cmd 执行 mvn test 执行 src/test/java 下单元测试类,下图为测试结果,运行 1 个测试用例,全部成功。
    在这里插入图片描述
  3. clean 是 maven 工程的清理命令,执行 clean 会删除 target 目录及内容。
  4. package 是 maven 工程的打包命令,对于 java 工程执行 package 打成 jar 包,对于 web 工程打成 war包。
  5. install 是 maven 工程的安装命令,执行 install 将 maven 打成 jar 包或 war 包发布到本地仓库。
    从运行结果中,可以看出:
    当后面的命令执行时,前面的操作过程也都会自动执行

3.1总结

3.1.1 maven 仓库

1、maven仓库的类型有哪些?
2、maven 工程查找仓库的流程是什么?
3、本地仓库如何配置?

3.1.2 常用的 maven 命令

常用 的 maven 命令包括:
compile:编译
clean:清理
test:测试
package:打包
install:安装

3.1.3 坐标定义

在 pom.xml 中定义坐标,内容包括:groupId、artifactId、version,详细内容如下:

cn.itcast.maven

北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
传智播客——专注于 Java、.Net 和 Php、网页平面设计工程师的培训
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
maven-first

0.0.1-SNAPSHOT
:打包类型
jar:执行 package 会打成 jar 包
war:执行 package 会打成 war 包
pom :用于 maven 工程的继承,通常父工程设置为 pom

3.1.4 pom基本配置

pom.xml 是 Maven 项目的核心配置文件,位于每个工程的根目录,基本配置如下:
:文件的根节点 .
: pom.xml 使用的对象模型版本
:项目名称,一般写项目的域名
:模块名称,子项目名或模块名称
:产品的版本号 .
:打包类型,一般有 jar、war、pom 等
:项目的显示名,常用于 Maven 生成的文档。
:项目描述,常用于 Maven 生成的文档
:项目依赖构件配置,配置项目依赖构件的坐标
:项目构建配置,配置编译、运行插件等


版权声明:本文为qq_47501822原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。