Maven核心概述

一、Maven 概述

Maven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建和 依赖管理

Maven 是目前最流行的自动化构建工具,对于生产环境下多框架、多模块整合开发有重要作用,Maven 是一 款在大型项目开发过程中不可或缺的重要工具。

Maven 可以整合多个项目之间的引用关系,我们可以根据业务和分层需要任意拆分一个项目;

Maven 提供规范的管理各个常用 jar 包及其各个版本,并且可以自动下载和引入项目中;

Maven 可以根据指定版本自动解决 jar 包版本兼容问题;

Maven 可以把 jar 包所依赖的其它 jar 包自动下载并引入项目

构建过程中的各个环节:清理、编译、测试、报告、打包、安装、部署

构建(build),是面向过程的(从开始到结尾的多个步骤),涉及到多个环节的协同工作。 构建过程的几个主要环节

  1. 清理:删除以前的编译结果,为重新编译做好准备
  2. 编译:将Java源程序编译为字节码文件
  3. 测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性
  4. 报告:在每一次测试后以标准的格式记录和展示测试结果。
  5. 打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web 工程对应war包。
  6. 安装:在Maven环境下特指将打包的结果——jar包或war包安装到本地仓库中。
  7. 部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行

1. Maven 核心概念

Maven能够实现自动化构建是和它的内部原理分不开的,这里我们从 Maven的九个核心概念入手,

看看Maven是如何实现自动化构建的

POM 、约定的目录结构 、坐标 、依赖管理 、仓库管理 、生命周期 、插件和目标 、继承 、聚合

  • POM : 一个文件 名称是pom.xml , pom翻译过来叫做项目对象模型,maven把一个项目当做一个模型使用。控制maven构建项目的过程,管理jar依赖。
  • 约定的目录结构 : maven项目的目录和文件的位置都是规定的
  • 坐标 : 是一个唯一的字符串,用来表示资源的
  • 依赖管理 : 管理你的项目可以使用jar文件
  • 仓库管理(了解) :你的资源存放的位置
  • 生命周期 (了解) : maven工具构建项目的过程,就是生命周期
  • 插件和目标(了解):执行maven构建的时候用的工具是插件
  • 继承
  • 聚合

2. 安装Maven环境

确保安装了java环境:maven本身就是java写的,所以要求必须安装JDK,java的环境变量得先配置好

1. 下载并解压maven安装程序

http://maven.apache.org/download.cgi

2. 配置Maven环境

在环境变量中:M2_HOME=Maven的目录 和在path中配置 %M2_HOME%/bin

3. 检验安装是否成功

3. Maven如何换资源存放位置

  1. 为什么要下载:maven工具执行的操作需要很多插件(java类--jar文件)完成的、

  2. 下载什么东西了:jar文件--叫做插件--插件是完成某些功能

  3. 下载的东西存放到哪里:默认仓库(本机仓库):
    C:\Users\(登录操作系统的用户名)Administrator.m2\repository

  4. 执行mvn compile, 结果是在项目的根目录下生成target目录(结果目录),
    maven编译的java程序,最后的class文件都放在target目录中

  5. 设置本机存放资源的目录位置(设置本机仓库):

    • 修改maven的配置文件, maven安装目录/conf/settings.xml先备份 settings.xml
    • 修改 <localRepository> 指定你的目录(不要使用中文目录)

3. Maven如何换镜像

如果不换镜像速度会很慢,所以在安装完成之后就换默认的

maven安装目录/conf/settings.xml,先备份 settings.xml,以免出错,然后添加以下信息

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

二、Maven核心概念

1. 约定的目录结构(重点)

大家都遵循的一个规则,每一个maven项目在磁盘中都是一个文件夹(项目-Hello)

Hello/
  ---/src
  ------/main           #放你主程序java代码和配置文件
  ----------/java       #你的程序包和包中的java文件
  ----------/resources  #你的java程序中要使用的配置文件

  ------/test  #放测试程序代码和文件的(可以没有)
  ----------/java       #测试程序包和包中的java文件
  ----------/resources  #测试java程序中要使用的配置文件

  ---/pom.xml  #maven的核心文件(maven项目必须有)

2. 仓库

1. 仓库是什么

仓库是存放东西的, 存放maven使用的jar 和 我们项目使用的jar
maven使用的插件(各种jar)
我们项目使用的jar(第三方的工具)

2. 仓库的分类

  1. 本地仓库, 就是你的个人计算机上的文件夹,存放各种jar
  2. 远程仓库, 在互联网上的,使用网络才能使用的库
    • 中央仓库,最权威的, 所有的开发人员都共享使用的一个集中的仓库,https://repo.maven.apache.org :中央仓库的地址
    • 中央仓库的镜像:就是中央仓库的备份, 在各大洲,重要的城市都是镜像。
    • 私服,在公司内部,在局域网中使用的, 不是对外使用的
  3. 仓库的使用,maven仓库的使用不需要人为参与。
    • 开发人员需要使用mysql驱动--->maven首先查本地仓库--->私服--->镜像--->中央仓库

3. pom:项目对象模型(重点)

1. 坐标:唯一值, 在互联网中唯一标识一个项目的

需要特别注意的是,项目在仓库中的位置是由坐标来决定的:groupId、artifactId 和 version 决定项目在仓库中 的路径,artifactId 和 version 决定 jar 包的名称

<groupId>公司域名的倒写</groupId>
 <artifactId>自定义项目名称</artifactId>
 <version>自定版本号</version>

https://mvnrepository.com/ 搜索使用的中央仓库, 使用groupId 或者 artifactId作为搜索条件

2. packaging

打包后压缩文件的扩展名,默认是jar ,web应用是war ,packaging 可以不写, 默认是jar

3. 依赖

一个 Maven 项目正常运行需要其它项目的支持,Maven 会根据坐标自动到本地仓库中进行查找

dependencies 和dependency ,相当于是 java代码中import

你的项目中要使用的各种资源说明, 比我的项目要使用mysql驱动

 <dependencies>
			<!--依赖  java代码中 import -->
		  <dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.9</version>
		 </dependency>
     
     log4j日志依赖 
     <dependency>             
         <groupId>log4j</groupId>             
         <artifactId>log4j</artifactId>             
         <version>1.2.17</version> 
     </dependency> 
     
     junit单元测试依赖 
     <dependency>             
         <groupId>junit</groupId>            
         <artifactId>junit</artifactId>             
         <version>4.11</version> 
     </dependency> 
 
     
 </dependencies>

4. maven生命周期

maven的生命周期:就是maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署

5. maven的命令

maven的命令:maven独立使用,通过命令,完成maven的生命周期的执行。
maven可以使用命令,完成项目的清理,编译,测试等等。当然了,现在这个阶段直接在IDEA中操作就行

Maven 提供一个项目构建的模型,把编译、测试、打包、部署等都对应成一个个的生命周期阶段,并对 每一个阶段提供相应的命令,程序员只需要掌握一小堆命令,就可以完成项目的构建过程。

  • mvn clean 清理(会删除原来编译和测试的目录,即 target 目录,但是已经 install 到仓库里的包不会删除)
  • mvn compile 编译主程序(会在当前目录下生成一个 target,里边存放编译主程序之后生成的字节码文件)
  • mvntest-compile 编译测试程序(会在当前目录下生成一个 target,里边存放编译测试程序之后生成的字节码文件)
  • mvn test 测试(会生成一个目录surefire-reports,保存测试结果)
  • mvn package 打包主程序(会编译、编译测试、测试、并且按照 pom.xml 配置把主程序打包生成 jar 包或者 war 包)
  • mvn install 安装主程序(会把本工程打包,并且按照本工程的坐标保存到本地仓库中)
  • mvn deploy 部署主程序(会把本工程打包,按照本工程的坐标保存到本地库中,并且还会保存到私服仓库中。 还会自动把项目部署到 web 容器中)。

注意:执行以上命令必须在命令行进入pom.xml所在目录!

posted @ 2020-08-04 20:14  山丘i  阅读(73)  评论(0编辑  收藏