Maven

Maven

1、Maven的安装和环境配置

1.1、安装Maven核心程序

  1. 检查 JAVA_HOME环境变量
    Maven

  2. 解压Maven核心程序的压缩包,放在一个非中文无空格路径下
    Maven

  3. 配置 Maven_HOME相关的环境变量
    [1] MAVEN_HOME或M2_HOME
    Maven

[2]path
Maven

  1. 在dos命令符下输入 mvn -v 检查是否安装成功
    Maven

2、Maven的核心概念

2.1、约定的目录结构

2.2、POM

POM:Project Object Model 项目对象模型
DOM:Document Object Model 文档对象模型

pom.xml 对于 Maven工程是核心配置文件,与构建过程相关的一切设置都在这个文件进行配置。重要程度相当于 web.xml 对于动态 Web 工程

2.3、坐标

  1. 数学中的坐标:
    在平面上,使用X,Y两个向量可以唯一的定位平面中的任何一个点。
    在空间中,使用X,Y,Z三个向量可以唯一的定位空间中的任何一个点。
  2. Maven 的坐标
    使用下面三个向量在仓库中唯一定位一个Maven工程
    1)groupid:公司或组织域名倒序+项目名
    2)artifactied:模块名
    3)version:版本
<groupId>org.example</groupId>
<artifactId>helloMaven</artifactId>
<version>1.0-SNAPSHOT</version>
  1. Maven 工程的坐标与仓库中路径的对应关系
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.0.4.RELEASE</version>

org\springframework\spring-core 这就是它在Maven仓库的路径
Maven

2.4、依赖

  1. Maven解析依赖信息时会到本地仓库中查找被依赖的 jar 包
    对于我们自己开发的 Maven 工程,使用 mvn install 命令安装后就可以进入仓库

  2. 依赖的范围
    Maven

[1] compile 范围依赖

  • 对主程序是否有效:有效
  • 对测试程序是否有效:有效
  • 是否参与打包:参与

[2] test 范围依赖

  • 对主程序是否有效:无效
  • 对测试程序是否有效:有效
  • 是否参与打包:不参与
  • 是否参与部署:不参与
  • 典型例子:junit

[3] provided 范围依赖

  • 对主程序是否有效:有效
  • 对测试程序是否有效:有效
  • 是否参与打包:不参与
  • 是否参与部署:不参与
  • 典型例子:servlet-api.jar

Maven
Maven
Maven
sMaven
Maven

2.5、仓库

  1. 仓库的分类
    本地仓库:当前电脑上部署的仓库目录,为当前电脑上所有Maven工程服务
  2. 远程仓库:
    1)私服:搭建在局域网环境中,为局域网范围内的所有 Maven 工程服务
    2)*仓库:架设在 Internet上,为全世界所有Maven工程服务
    3)*仓库镜像:为了分担*仓库的流量,提升用户访问速度
  3. 仓库中保存的内容:Maven工程
    1)Maven自身所需要的插件
    2)第三方框架或工具的 jar 包
    3)我们自己开发的 Maven 工程

Maven

2.6、生命周期/插件/目标

  1. 各个构建执行的顺序:不能打乱顺序,必须按照既定的正确顺序来执行。

  2. Maven的核心程序中定义了抽象的生命周期,生命周期中各个阶段的具体任务是由插件来完成的。

  3. Maven核心程序为了更好的实现自动化构建,按照这一特点执行生命周期中的各个阶段:不论现在要执行生命周期的哪一个阶段,都是从这个生命周期最初的位置开始执行

Maven

2.7、继承

Maven

2.8、聚合

Maven

3、第一个Maven工程

3.1、创建约定的目录结构

1.根目录:工程名
2.src目录:源码
3.pom.xml文件:Maven工程的核心配置文件
4.main目录:存放主程序
5.test目录:存放测试程序
6.java目录:存放Java源文件
7.resources目录:存放框架或其他工具的配置文件

为什么要遵守约定的目录结构?

  • Maven要负责我们这个项目的自动化构建,以编译为例,Maven想要自动进行编译,那么它必须知道 Java源文件保存在哪里
  • 如果我们自己自定义的东西想要让框架或工具知道,有两种办法
  1. 已配置的方式明确告诉框架
    Maven
  2. 遵守框架内部已经存在的约定
    log4j.properties
    log4j.xml
    约定>配置>编码

4、常用的Maven命令

  1. 注意:执行与构建过程相关的Maven命令,必须进入pom.xml所在的目录。
    与构建过程相关:编译、测试、打包、…

  2. 常用命令
    1.mvn clean:清理
    2.mvn compile:编译主程序
    3.mvn test-compile:编译测试程序
    4.mvn test:执行测试
    5.mvn package:打包

5、联网问题

  1. Maven 的核心程序仅仅定义了抽象的生命周期,但是具体的工作必须由特定的插件完成。而插件本身并不包含在Maven的核心程序中。
  2. 当我们执行的Maven命令需要用到某些插件时,Maven核心程序会首先到本地仓库中查找。
  3. 本地仓库的默认位置:[系统中当前用户的家目录].\m2\repositoty
    Maven
  4. Maven核心程序如果在本地仓库中找不到需要得到插件,那么它会自动连接外网,到*仓库中查找。
  5. 如果此时无法连接外网,则构建失败
  6. 修改默认本地仓库的位置可以让 Maven 核心程序到我们事先准备好的目录下查找插件
    1)找到 Maven解压目录\conf\settings.xml
    2)在settings.xml 文件中找到localRepositoty标签
    3)将 /path/to/local/repo 从注释中取出
    4)将标签体内容修改为已经准备好的Maven仓库目录
    Maven

笔记来自尚硅谷Maven教学

上一篇:CharacterController.Move called on inactive controller


下一篇:关于python打包成exe的一点经验之谈