史上最详细的Maven教程!——深入理解Maven系列

Posted 来老铁干了这碗代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了史上最详细的Maven教程!——深入理解Maven系列相关的知识,希望对你有一定的参考价值。

前言:工欲善其事必先利其器,只有先了解了Maven后,才能更好的使用Maven编写项目。



Maven教程

第一章 Maven简介

1.1 Maven概述

Apache开发的管理工具

官网http://maven.apache.org/

概念:Maven项目对象模型(POM),通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。

目标:希望开发人员能在最短时间内理解开发的完整状态。

特点:简化构建过程、统一构建体系、提供高质量的项目信息、提供开发的最佳实践指南、实现透明的新特性的迁移、简化构建过程。


1.2 Maven的作用

1、管理依赖:管理Jar及其下载,版本

2、构建项目:完成项目代码的编译、测试、打包和部署


1.3 Maven的使用方式

1、独立使用Maven:使用Maven的各种命令,完成代码的编译、测试和打包

2、结合开发工具使用:一般在idea中使用maven,简单,快捷,不需要级命令


1.4 Maven的核心概念

1. POM: pom.xml,叫做项目对象模型、把一个项目当做一个模型使用,类似于控制层,完成编译、测试、打包、安装、部署等等。

2. 约定的目录结构:有规定的目录和文件位置

3. 坐标:唯一的字符串,表示资源

4. 依赖管理:管理项目可以使用的Jar文件

5. 仓库管理(了解):资源存放的位置

6. 生命周期(了解):maven工具构架项目的过程

7. 插件和目标(了解):执行maven构建时用的工具是插件

8. 继承

9. 聚合


1.5 安装Maven环境

Maven的使用,先难后易,使用maven命令很难,在idea中直接使用maven,代替命令。

Maven安装和配置

  1. 官网下载http://maven.apache.org/

在这里插入图片描述


  1. 必须要下载到英文名字的文件夹中,否则文件不会生效,下面是一些核心文件的解释

    • bin:执行程序,主要是mvn.cmd
    • conf: maven的本身配置文件,主要是setting.xml
  2. 配置环境变量:在系统的环境变量中,指定一个M2_HOME名称,指定它的值maven工具的安装目录

    再把M2_HOME加入到path中,在所有路径前加入%M2_HOME%\\bin

在这里插入图片描述

  1. 安装成功的标志

打开cmd,输入mvn -v指令,若能执行成功,则代表maven安装成功了。
在这里插入图片描述


1.6 Maven的编译过程

命令行的编译方式:

输入cmd->进入命令行,进入想输入的Maven文件中,输入mvn compile,编译所有Java文件

为什么要下载? 因为Maven工具执行需要很多插件

下载了什么东西? 插件:完成某些功能

下载的东西放哪了? 默认仓库:C:\\Users\\Administrator\\.m2\\repository

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

也就是说,编译项目时,明明某个文件存在,可运行时系统却报错为不存在,原因就可能是该文件在项目中存在,但是在target文件夹中不存在。

修改仓库地址:在setting.xml中修改


第二章 Maven的核心概念

2.1 Maven工程约定的目录结构

任何项目其实都有约定,约定就是一个规则。

在这里插入图片描述

main:主程序的Java代码和配置文件

Java:程序包和包中的Java文件

resources: Java程序中要使用的配置文件

pom.xml: Maven的核心文件


2.2 pom.xml文件

pom.xml,叫做项目对象模型。控制全局。把一个项目当做一个模型使用,类似于控制层,完成编译、测试、打包、安装、部署等等。


2.3 仓库

  • 存放物品:存放Jar、Maven的插件等等

  • 仓库分类

    • 本地仓库,可以在maven安装目录/conf/settings.xml中指定
    • 中央仓库:最权威的,所有的资源都放在这里
    • 中央仓库的镜像:分担压力的
    • 私服:公司局域网内部使用的,就是公司自己开发的

2.4 Maven的生命周期

概念:项目的构建过程:清理、编译、测试、报告、打包、安装、部署


2.5 Maven的常用命令

  • 概述:Maven通过命令完成

  • mvn clean:清理

  • mvn compile:编译src/main/java目录中的程序,把Java编程成class文件,并放到target/classes目录中

  • mvn test-compile:编译src/main/test目录下的Java程序,拷贝到target/test-class目录中

  • mvn test:进行单元测试,使用Junit测试src/main/java目录下的程序是否符合要求

  • mvn package:打包。把程序中src/main/test下面的Java编译后的class和resources中的配置文件放入到一个压缩包中。

  • mvn install:把jar、war安装到本机仓库中


2.6 插件

概念:Maven提供的功能,用来执行清理、编译、测试、报告、打包的程序


2.7 坐标(gav)

由三个向量组成,唯一定位一个Maven项目,三者同时定义路径,groupId和version决定Jar包名称

groupId:组织名,通常是一个公司或组织名称倒序+项目名

artifactId:模块名:通常是工程名

version:版本号


2.8 依赖(dependency)

依赖的作用:用依赖把jar导入到项目中


第三章 Maven在IDEA中的应用

3.1 在idea中设置maven

1. maven简介

idea中内置maven,但一般不用,因为用内置修改maven的设置不方便

因此使用自己安装的maven,需要覆盖默认配置,也就是指定maven的安装位置等信息
在这里插入图片描述

其中:Setting选项是用来设置本项目的Maven的

Other Setting是设置以后建立的项目的Maven的

目录如下:

在这里插入图片描述

进入Setting项,可以看到有三个项目管理工具

在这里插入图片描述

其中,框选的两个项目工具最常用,Gradle是最新开发的项目管理工具,功能更强但应用较少。

打开Maven,框选的三个分别是Maven工具的存放路径、配置文件的存放路径、本地仓库(target文件)的存放路径

在这里插入图片描述

2. maven-Runner选项的配置

1. 变得更快

接下来进入Runner选项,配置vm项,可以让maven创建的更快

原本的maven默认下载一个模板文件,有7M,下载很慢,为了不让他下载,就需要在vmOption中进行配置,禁用相关的下载。
在这里插入图片描述

2. 自动刷新功能

若想让Maven自动刷新,即一旦更新pom.xm文件,Maven项目就自动刷新,只需勾选红框内的选项即可

在这里插入图片描述

3. 对新创建的项目的Maven配置

操作与对本项目进行Maven配置一致

在这里插入图片描述


3.2 Maven创建Java项目

需要选择的Maven模板:

使用普通Java项目模板创建即可

在这里插入图片描述


3.3 Maven创建Web项目

需要选择的Maven模板:
在这里插入图片描述


第四章 依赖管理

4.1 依赖的范围

依赖范围的名称和说明见下表:

一般来说,只有单元测试的依赖范围是test

下面,给出了test的依赖示例

在这里插入图片描述


第五章 Maven常用设置

5.1 Maven的属性设置

<properties>设置maven的常用属性

在这里插入图片描述


5.2 全局变量

全局变量的定义格式:${变量名}

对于:自定义全局变量,一般用来自定义版本号。做法是:先使用全局变量定义,再使用${变量名}

在这里插入图片描述


5.3 指定资源插件

一般来说,如果不指定任何资源插件,src/main/javasrc/test/java两个目录中的所有*.java文件会被编译,并将结果分别存放到target/classestarge/test-classes目录中

但是这两个目录中的其他文件都会被忽略掉,因此,如果我们需要使用其他文件,在运行时就会报错。 解决办法是指定资源插件,将以下内容放到<buid>标签中,将其他文件也进行编译

<build>
    <!--把src/main/java目录中的.xml文件包含到输出结果中,输出到classes目录中-->
    <resources>
        <resource>
            <directory>src/main/java</directory> <!--所在的目录-->
            <includes> <!--包括目录下的.properties.xml文件都会扫描到-->
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <!--表示不用过滤器,因为.property已经起到过滤的作用了-->
            <filtering>false</filtering>
        </resource>
    </resources>
</build>

单词学习

Execution:执行

Deployment:部署

archetype:模板、原型


喜欢就点个赞吧!

以上是关于史上最详细的Maven教程!——深入理解Maven系列的主要内容,如果未能解决你的问题,请参考以下文章

史上最详细的IDEA优雅整合Maven+SSM框架(详细思路+附带源码)

史上最详细的Maven使用笔记(建议收藏)

史上最详细的IDEA优雅整合Maven+SSM框架(详细思路+附带源码)

史上最详细教程-Android library 发布到JCenter

这恐怕是史上最简单的上传 AAR 教程

Springboot整合Rabbitmq(史上最详细)