Maven 笔记

在这里插入图片描述

简介

为什么要使用Maven

在开发过程中,相信大家或多或少都会感觉在一些配置的方面比较繁琐,比如说

  1. 一个项目就是一个工程
    如果项目非常庞大,就不适合使用package 划分模块,最好是每一个模块对应一个工程,利于分工协作。
    借助于Maven 就可以将一个项目拆分为多个工程

  2. 项目中需要的jar包必须手动复制粘贴到/lib目录下
    带来问题:同样的jar包重复出现在不同的项目工程中,一方面浪费存储空间,另一方面让工程比较臃肿
    借助Maven,可以将jar包仅仅保存在“仓库中”,有需要使用的工程“引用” 这个文件接口,并不需要将jar 包赋值过来。

  3. jar包需要别人替我们准备好,或到官网下载
    不同技术的官网提供jar 包下载的形式是五花八门的。
    有些技术的官网就是通过Maven 或者SVN 等专门的工具下载的。
    如果是以非正式方式下载的jar包,那么其中的内容很可能也是不规范的。
    借助于Maven 可以以一种规范的方式下载jar包,因为所有知名度框架或第三方工具的jar 包已经按照统一的规范放在Maven 的中央仓库中,以规范的方式下载的jar 包,内容也是可靠的。

    Tips:“统一的规范”,不仅是对IT开发领域非常重要,对于整个个人类社会都是非常重要的。

  4. 一个jar包依赖的其它jar包需要自己手动加入到项目中
    Maven 会自动将被依赖的jar 包导入进来。

Maven(妹吻)是什么

  1. Maven是一款服务于Java 平台的自动化构建工具
    • Make->Ant->Maven->Gradle
      2.构建

    • 构建 != 创建
      概念:“以”java源文件”,“框架配置文件”,“JSP”,“HTML”,“图片”等资源为原材料,去“生产”一个可以与逆行的项目的过程

      编译:java源文件->编译->Class字节码文件->交给JVM去执行

      部署:一个BS项目最终运行的并不是动态的Web 工程本身,而是这个动态Web 工程“编译的结果”,
      生的鸡 ->处理 -> 熟的鸡
      动态Web 工程 - >编译,部署- >编译结果

      Tips: 运行时环境其实是一组jar 包的引用,并没有把jar 包本身复制到工程中,所以并不是目录
      在这里插入图片描述

配置Maven 相关的环境变量

查看jdk配置
在这里插入图片描述
添加用户变量
在这里插入图片描述
配置环境变量
在这里插入图片描述

配置完成后:
输入mvn -v,出现下面提示,安装成功
在这里插入图片描述

Maven 的核心概念

  1. 约定的目录结构
  2. POM
  3. 坐标
  4. 依赖
  5. 仓库
  6. 生命周期/插件/目标
  7. 继承
  8. 聚合

目录结构

  1. 创建约定的目录结构

    • 根目录:工程名
    • src目录: 源码
    • pom.xml 文件:Maven 工程的核心配置文件
    • main 目录:存放主程序
    • test 目录:存放测试程序
    • java 目录:存放Java 源文件
    • resources 目录:存放框架或其它工具的配置文件
  2. 为什么要遵守约定的目录结构

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

常用Maven 命令

[1]  mvn clean : 清理
[2]  mvn compile : 编译主程序
[3]  mvn test-compile : 编译测试程序
[4]  mvn test : 执行测试
[5]  mvn package : 打包
[6]  mvn install : 安装
[7]  mvn site : 生成站点

注意:执行与构建过程相关的Maven 命令,必须进入pom.xml 所在的目录
右键点击pom.xml文件,点击show in explorer会显示文件所在目录

在这里插入图片描述
然后直接在地址栏输入cmd
在这里插入图片描述
在这里插入图片描述
关于联网问题:
1. Maven 的核心程序中仅仅定义了抽象的生命周期,但是具体的工作必须由特定的插件来完成。而插件本身并不包含在Maven 的核心程序中。
2. 当我们执行的命令需要用到某些插件时,Maven 核心程序会首先到本地仓库中查找
3. 本地仓库的默认位置[系统中当前用户的家目录].m2\repository在这里插入图片描述

POM

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

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

坐标

使用下面三个向量在仓库中唯一定位一个Maven 工程

[1] groupid : 公司或组织域名倒序 + 项目名
[2] artifactid : 模块名
[3] version : 版本

在这里插入图片描述

仓库

  1. 仓库分类

    • 本地仓库:当前电脑上部署的仓库目录,为当前电脑上所有Maven 工程服务
      本地仓库的默认位置[系统中当前用户的家目录]\.m2\repository
    • 远程仓库:
      • 私服:搭建在局域网环境中,为局域网范围内的所有Maven 工程服务
      • 中央仓库:假设在Internet上,为全世界所有Maven 工程服务
      • 中央仓库镜像:为分担中央仓库的流量,提升用户访问速度
  2. 仓库中保存的内容: Maven 工程

    • Maven 自身所需要的矿建
    • 第三方框架或工具的jar 包
    • 我们自己开发的Maven 工程

依赖

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

  2. 依赖的范围
    在这里插入图片描述
    [1] compile范围依赖

    • 对主程序有效
    • 对测试程序有效
    • 参与打包
    • 参与部署
    • 典型例子 spring-core

    [2] test 范围依赖

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

    [3] provided 范围依赖

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

在这里插入图片描述

生命周期

  1. 各个构建环节执行的顺序:不能打乱顺序,必须按照既定的正确顺序来执行
  2. Maven 的核心程序中定义了抽象的生命周期,生命周期中各个阶段的具体任务是由插件来完成的
  3. Maven核心程序为了更好的实现自动化构建,按照这一特点执行生命周期中的各个阶段:不论现在要执行生命周期中的哪一个阶段,都是从这个生命周期最初的位置开始执行。

第一个Maven工程

配置setting.xml

在maven安装目录下新建一个repository 文件夹:
在这里插入图片描述
复制文件夹地址,打开setting.xml 文件,配置仓库路径:
在这里插入图片描述

配置idea

打开File ⇒ Setting
在这里插入图片描述
选择Runner
在VM Options中输入:

-DarchetypeCatalog=internal

在这里插入图片描述

创建一个新工程

在这里插入图片描述
选择Maven项目,右侧是已经创建好的Maven骨架,使用骨架的条件是联网或者配置好了使用本地骨架的属性。

使用骨架创建:

使用骨架的话要勾选 Create from archetype
然后选择maven-archetype-quickstart,这是idea为maven提供的创建Java的骨架

在这里插入图片描述
点击Next:
在这里插入图片描述
点击Next:
在这里插入图片描述

不使用骨架创建:

在这里插入图片描述
在这里插入图片描述
创建的工程如下:
在这里插入图片描述

使用骨架创建web工程:

找到webapp骨架:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

其它功能

从中央仓库寻找jar包

maven中央仓库:https://mvnrepository.com/

搜索需要用到的jar包名称
在这里插入图片描述
点击对应的版本:
在这里插入图片描述
再选择需要的版本型号:

在这里插入图片描述
选择Maven,再将仓库坐标复制到pom.xml 中。

防止jar包冲突

设置jar包作用域:

<scope>provided</scope>

运行环境修改

tomcat

添加插件:

<project>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
            </plugin>
        </plugins>
    </build>
</project>

这里的groupId并不会自动提示,如果记不住
打开File=> Setting,搜索 live
在这里插入图片描述
我创建一个组:
在这里插入图片描述
创建模板组后,在模板组中添加一个模板:
在这里插入图片描述
在这里插入图片描述
现在输入tomcat,会有提示,回车就可以自动输入:
在这里插入图片描述
在这里插入图片描述

JDK模板定制

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <target>1.8</target>
        <source>1.8</source>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

在这里插入图片描述
在这里插入图片描述

©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页