一、什么是maven?

  1.概述

    核心点:项目构建、依赖管理、【更新】:源码关联

    (如何关联源码:在依赖的jar上右击 maven download source即可)

  Maven是一个项目管理和综合工具Maven提供了开发人员构建一个完整的生命周期框架。(字面意思为 专家)

    开发团队可以自动完成该项目的基础设施建设时间几乎没有,Maven使用标准的目录结构和默认构建生命周期。

   maven是Java编写的,服务于Java 的构建工具

  在多个开发团队环境的情况下,Maven可以设置在上班的路上在很短的时间内为标准。由于大部分的项目设置简单可重复使用,

    Maven的生活的开发容易,而创建报告,检查,生产和测试的自动化设置。

  学maven最重要也是最难的不是怎么配置、怎么使用maven,而是为什么使用maven,既然目前掌握的东西已经可以完成一些项目了,

那为什么还要学习maven呢? 为什么是maven而不是ant等其他构建工具? 带着这个问题我们再往下走。

    这里就不再展开 ant && 新秀gradle 等

  2.目前存在的问题

    1)一个项目只是一个工程

       如果项目非常庞大,模块众多,使用package进行划分也不便于管理,最好是一个模块对应一个工程,便于分工及管理等。

    2)使用的jar包必须手动复制——粘贴到WEB-INF/lib目录下

       同样的jar包重复出现在不同工程中,继浪费空间,又导致项目臃肿。

       使用maven将可以把jar包保存在‘仓库’中,工程只需要进行引用。

    3)jar包需要自己准备(官网下载等)

        各大官网提供的下载是五花八门的,导致下载不便(当然,去一些英文网站下载由于英语水平也导致困难/笑哭)

        而且,一些第三方提供的下载(CSDN等等)下载的内容难以保证是否正规

        当然,也有一些是直接提供maven下载的

    4)各jar包的依赖管理需要手动管理

        比如fileupload依赖于io包,如果依赖信息越来越多,手动管理将十分复杂!

        maven就会帮我们进行依赖管理

  3.项目构建

  既然maven作为一款项目构建和依赖管理的工具,那什么叫项目构建呢

  以Java源文件、框架配置文件、JSP、HTML、图片等等的资源这些“原材料”,去“生产”一个可以运行的Java程序的过程

    包含 编译、部署、搭建等过程

  这里我们需要特别注意的是工程目录编译前后的关系:

    maven第一天——入门与基本概念

  //像我们访问webContent下某个文件时是无需写此目录的。build是编译后的classes

  想要查看编译后的项目目录信息,可以安装插件直接browse deployment location再找到项目文件夹(当然这一步可以手动)

  为了清晰地看清结构呢,可以复制项目(到tomcat中复制项目)到eclipse任意一个工程中展开查看,例如:

maven第一天——入门与基本概念

//可以看到,和webContent是没有关系的(当然,编译结果是在build目录下,可以搜索navigator视图查看)

//项目运行的不是我们编写的动态WEB工程,而是“编译”后的结果

//像rt等一些运行时环境是不在目录结构中的,只是引用

  构建的步骤:

    清理:将以前编译的旧的字节码文件删除

    编译:将源程序编译成字节码文件

    测试:关键点的自动测试,自动调用我们准备好的jUnit

    报告:测试的结果就是测试报告

    打包:动态Web工程打的是war包,Java工程打的是jar包

    安装:将打包得到的文件复制到仓库中的指定位置

    部署:将动态Web工程生成的war包复制到servlet容器目录的指定位置

二、如何使用maven

  安装maven核心程序

    1)检查:

        由于maven也是java编写的,安装之前需要检查JAVA_HOME是否正确配置 

       Echo %JAVA_HOME%:输出JAVA_HOME路径
      Java -version:查看JDK版本

 

    2)解压:

        之后我们解压核心程序:apache-maven-3.5.0-bin.zip (版本自由选择),解压好后放在一个非中文、无空格目录下

        (我这里放到F:/maven目录下)

    3)配置:

        对maven的环境变量进行配置

          a.配置MAVEN_HOME或M2_HOME(向下兼容)

          b.配置Path

            新建系统变量   MAVEN_HOME(M2_HOME亦可)  变量值:F:\maven\apache-maven-3.2.2

          编辑系统变量  Path         添加变量值: ;%MAVEN_HOME%\bin

      //当然,其实自己的电脑是可以配用户变量的(据网友回答:

      如果设置的是用户环境变量,还需要注销再登陆才生效;path中加上 C:\Windows\System32
      //settings的配置见下文补充(位置与内容)

    4)验证:运行dos命令 mvn -v;正常显示版本信息则成功。

    5)更新

    Maven的更新

         在Windows上更新Maven非常简便,只需要下载新的Maven安装文件,解压至本地目录,然后更新M2_HOME环境变量便可。

      更新注意修改的地方:环境变量的更换的配置,settings.xml中本地仓库的设置,jdk版本的设置,仓库镜像的设置,eclipse中的设置

     【更新】:我们可以将conf目录下的settings.xml文件拷贝一份到Maven本地仓库的位置(之后更换版本时就无需重复指定了),之后在eclipse中只需指定一次配置文件位置即可!

    Linux下安装可以参考https://blog.csdn.net/mynameissls/article/details/54140176

三、maven的核心概念

  1.概念

    1.约定目录结构

    2.POM

    3.坐标

    4.依赖

    5.仓库

    6.生命周期/插件/目标

    7.继承

    8.聚合

    //以上重要程度按颜色区分,以下将逐一解释介绍这些概念

      聚合、继承将在day02讲解

  2.第一个maven工程

  我们通过第一个maven工程来感性认识一下以上的概念

  ①目录结构
    Hello
    |---src
    |---|---main
    |---|---|---java
    |---|---|---resources
    |---|---test
    |---|---|---java
    |---|---|---resources
    |---pom.xml

  1)创建约定目录结构

    根目录——工程名

      src目录——源码

        main——主程序

        test——测试程序

          java——java源文件

          resources——框架或其他工具的配置文件等

      pom.xml文件——maven的核心配置文件

  2)为什么要遵循约定目录结构

    maven作为自动化构建工具,比如它要编译,它就需要知道编译的路径,按照约定,maven才能智能地为我们服务

    要想让maven知道我们自定义的结构,我们可以:

      使用配置文件

      遵循约定

    一般情况下:约定优于配置

   接下来我们来建立这个maven工程

    在WORKPLACE下新建Hello文件夹

    在Hello文件夹下新建src文件夹和pom.xml配置文件

      配置文件这里暂时不展开,后续补充:

<?xml version="1.0" ?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.atguigu.maven</groupId>
    <artifactId>Hello</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <name>Hello</name>
      
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>
View Code

相关文章:

  • 2022-01-22
  • 2021-08-20
  • 2021-05-26
  • 2021-10-25
  • 2021-12-12
  • 2021-09-15
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-03-04
  • 2021-06-17
相关资源
相似解决方案