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所在目录!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


本篇文章和大家了解一下怎么搭建maven私有仓库。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。在本篇文章中,我们将介绍如何搭建一个Maven...
今天小编给大家分享的是如何解决Maven依赖冲突,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。目...
这篇文章主要介绍了Maven仓库分类的优先级是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Maven仓库分类的优先级是什么文...
本篇内容主要讲解“Maven怎么实现自己的starter依赖”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Maven怎
本篇内容主要讲解“maven不能下载oraclejdbc驱动的问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大...
这篇文章主要介绍了怎么使用maven基本命令打包包名的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用maven基本命令打包包...
本篇内容介绍了“maven中profile如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧...
本文小编为大家详细介绍“Maven打包没有指定主类问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“Maven打包没有指定主类问题怎么解决”文章能帮助...
这篇文章主要介绍“maven怎么打包动态环境变量”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“maven怎么打包动态环...
今天小编给大家分享一下Maven离线模式打包的步骤是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考
本文小编为大家详细介绍“maven打包时候修改包名称带上git版本号和打包时间的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“maven打包时候修改包...
这篇文章主要讲解了“maven打包怎么指定jdk的版本”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“maven打...
这篇“Maven打包时怎么指定启动类”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读
这篇文章主要讲解了“怎么使用jenkins配置maven和JDK”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎
这篇文章主要介绍了maven中配置项目的jdk版本无效怎么排查的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇maven中配置项目的jdk...
今天小编给大家分享一下Maven提示jdk版本不正确怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考
本篇内容主要讲解“maven优缺点及使用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“maven优缺点
这篇文章主要介绍“maven项目引入maven库没有jar怎么处理”,在日常操作中,相信很多人在maven项目引入maven库没有jar怎么处理问题上存在疑惑,小编查阅了各式资...
本篇内容主要讲解“怎么下载远程maven仓库的jar并手动放到本地仓库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学...
这篇文章主要介绍“maven私服搭建与使用的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“maven私服搭建...