给予一个对于Maven的大概的认识

  • 第一章 Maven概述
  • 1.1 介绍
  • 1.2 maven优势举例
  • 1.3 项目一键构建
  • 1.4 仓库的种类和彼此关系
  • 1.5 Maven标准目录结构
  • 第二章 Maven常用命令
  • 2.1 clean
  • 2.2 compile
  • 2.3 test
  • 2.4 package
  • 2.5 install
  • 2.6 deploy
  • 第三章 Maven核心
  • 3.1 Maven生命周期
  • 3.2 Maven概念模型图


第一章 Maven概述

1.1 介绍

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

能解决什么问题?

  1. 我们在开发的时候,需要引入各种jar包,但是就是十分的麻烦,经常会遇到jar包冲突和版本冲突等情况,但是,maven可以帮助我们解决这个问题
  2. 能及时编译.java文件
  3. 提供单元测试
  4. 后端写完之后也要打包,但是要手动打包我们的代码.maven可以用一个命名完成这些事情

1.2 maven优势举例

  1. jar包放在了项目之外的地方管理,不用放在工程目录中,放在了他独有的jar包仓库中,项目通过jar包的坐标引用jar包仓库中的文件,因此,打包之后的文件的大小十分的小
  2. 同时,这个jar包的架构还可以复用,而不用复制粘贴进别的项目目录,因此很节省磁盘空间

Java开源项目管理工具 java项目管理器_配置文件

1.3 项目一键构建

我们的项目,往往都要经历编译,测试,运行,打包,安装,部署等一系列过程.

maven可以替我们完成这些事情,这就是构建

Maven规范化构建流程如下:

Java开源项目管理工具 java项目管理器_jar包_02

什么叫做一件构建? 意思就是你通过一个命令就可以把上面的所有事情都做完

1.4 仓库的种类和彼此关系

仓库分三类: 本地仓库, 远程仓库【私服】,中央仓库。

  1. 本地仓库: 保存项目jar包的地方,在conf的setting.xml文件里面我们可以看到,本地仓库的默认位置是${user.home}/.m2/repository,在我的电脑上面路径就是C:\Users\CUMT_CJY\.m2\repository
  • 当然,我们可以修改,在那个配置文件的下面添加上<localRepository>路径</localRepository> ,就行了
  1. 远程仓库: 可以理解为企业的自己的jar包仓库,程序员可以从这个仓库里面拉取需要的jar包进自己的仓库
  2. 中央仓库: 就是一个官方提供的仓库,这里面存放了几乎所有的开源的jar包,联网下我们就能够从这里下载这些东西

当启动一个MAVEN项目的时候,三者的关系:

  1. 首先系统会寻找本地仓库中是否有运行该项目需要的jar包
  2. 如果本地没有,那么就去远程仓库查找并下载
  3. 如果远程仓库没有,远程仓库就会去中央仓库寻找并下载是否有这个jar包

注意:

  1. 如果没有远程仓库,那么本地仓库就会直接去中央仓库下载需要的jar包
  2. 本地仓库也可以上传jar包到远程仓库

关系如下图

Java开源项目管理工具 java项目管理器_Java开源项目管理工具_03

1.5 Maven标准目录结构

首先,一个完整的项目要有几个部分?

  1. 核心代码部分
  2. 配置文件部分
  3. 测试代码部分
  4. 测试配置文件

我们来看看,传统项目的项目目录结构

  • 项目名
  • src
  • config(resources)

没了,显然这是不合理的,尽管会有配置文件专门放置的目录,但是这个目录的名称是没有规范的,容易不被人理解,所以我们需要一个项目结构的标准

我们再来看看,maven项目标准目录结构

  • 项目名
  • src
  • main
  • java : 核心代码部分
  • resources: 配置文件部分
  • webapp(是web项目才有): 页面资源,js,css,图片等
  • test
  • java: 测试配置文件
  • resources: 测试的配置文件

第二章 Maven常用命令

2.1 clean

作用 : **删除项目编译信息,**就是删除target文件夹

为什么需要它?

  1. 我们在接手项目的时候,我们得到的别人的target的文件我们不一定能运行(因为每个人的电脑的配置环境有差别),所以我们要删掉他的,我们自己重新编译

2.2 compile

作用: 编译main/java里面的代码,同时将其保存在target/classes文件夹下面

2.3 test

作用: 将测试下的java文件编译成为class文件,放在target/test-classes文件夹中,并在控制台返回测试结果

注意: 同时也会编译main/java下的代码,相当于执行了compile

2.4 package

作用: 打包项目,在target目录下生成.war的项目文件

注意: 他还会做compile和test

注意

  1. 之所以打包成为.war文件,是因为在pom.xml配置文件中,packaging标签里面默认就是打包成为war

2.5 install

作用: 将项目的war包保存在了本地仓库

注意: 同时做了,编译,测试,打包项目这些事情

注意

  1. 保存的路径和你main/java后面的目录名有关

2.6 deploy

作用: 部署项目

前提: 我们需要首先进行一些配置

第三章 Maven核心

3.1 Maven生命周期

Java开源项目管理工具 java项目管理器_Java开源项目管理工具_04

我们不难发现,其实这些命令就是一些生命周期

同时,在默认生命周期里面,当后面的某个命令执行的时候,他的前面的所有命令都要执行

例如: 我执行install, 那么compile,test,package都要执行过才行

3.2 Maven概念模型图

Java开源项目管理工具 java项目管理器_Java开源项目管理工具_05