Maven的学习笔记

Maven

Maven 是一项比较重要的技术,之后我们学习的很多技术点,包括Mybatis的学习(马上整理发送)都是用的Maven进行的依赖jar包的管理


一、Maven简介

1.1 Maven产生的背景

  • 完成一个项目需要完成的工作

    • 1、分析项目,知道项目的组成成分

    • 2、设计项目,步骤、技术、人力、时间

    • 3、组建团队,购买设备、服务器、软件、笔记本

    • 4、开发人写代码 ---- > 开发人员测试代码(重复多次)

      测试人员测试代码,测试项目功能是否符合要求 — 开发人员修改测试 ---- 测试人员测试 — 还有问题,移交开发人员…— 没问题,部署,通过

  • 传统开发项目的问题

    • 1、手工管理模块关系比较繁琐
    • 2、需要很多第三方软件,需要的jar文件,需要手工下载
    • 3、需要管理jar包的版本
    • 4、管理jar文件之间的依赖
      • 依赖:a.jar需要b.jar才能运行,这个关系叫做依赖(a依赖于b);或者项目中需要mysql驱动,那么也可以叫做这个项目依赖mysql驱动
  • 改进项目的开发和管理:

    • 1、管理jar文件;
    • 2、自动下载jar文件和他的文档,源代码;
    • 3、管理jar之间的依赖,a.jar需要b.jar,maven会自动下载b.jar
    • 4、管理你需要的版本
    • 5、帮你编译程序,把java编译为class
    • 6、帮你测试你的代码是否正确
    • 7、帮你打包文件,形成jar包和war包
    • 8、帮你部署项目

1.2 Maven概述

  • 官网:https://maven.apache.org/
  • 构建:项目的构建,面向过程,完成项目代码的编译、测试、运行、打包、部署等
    • maven支持的构建包括
      • 1、清理:将之前项目编译的东西删除掉,为新的代码重新进行编译做准备;
      • 2、编译:将程序源代码编译为执行代码,java–class文件这个编译是批量的(同时操作);
      • 3、测试:maven可以执行测试代码,验证你的功能是否正确,也是批量的(同时操作);
      • 4、报告:生成测试结果的文件,测试通过没有;
      • 5、打包:把项目中所有的class文件,配置文件等所有资源打包到一个压缩文件当中(此文件为项目的结果文件。java一般是.jar , web应用是.war包)
      • 6、安装:把5中的.jar或者.war文件安装到本地仓库
      • 7、部署:把程序安装好可以执行。

1.3 Maven核心概念

  • Maven可以实现自动化构建,有9个核心概念
    • 1、POM文件
      • pom.xml文件,项目对象模型。maven把一个项目当作一个模型来使用。
      • 作用:控制maven构建项目的过程,管理jar依赖
      • 是maven的核心!
    • 2、约定的目录结构
      • maven项目的结构和文件的位置都是规定的。
    • 3、坐标
      • 是一个字符串,用来表示资源的
    • 4、依赖管理
      • 用来管理项目中可以使用的jar文件
    • 5、仓库管理
      • 资源存放的位置
    • 6、生命周期
      • maven构建项目的过程
    • 7、插件和目标
      • 执行maven构建的时候用的工具是插件
    • 8、继承
      • 类似于java中继承的概念
    • 9、聚合
      • 将项目归纳到一起

1.4 安装Maven环境

  • 下载maven3.6.1
  • 下载到非中文目录,解压即可
    • 子目录:
      • bin:执行程序,主要是mvn.cmd
      • conf:maven本身的配置文件settings.xml
  • 配置环境变量
    • Path下到bin目录
    • MAVEN_HOME到bin的上级目录
  • 验证:mvn -v
    • 注意:需要JAVA_HOME

二、Maven的核心概念

2.1 Maven工程的目录结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nBE0ZWgK-1617511752027)(D:\Study\For OutClass\Profession\杂\Maven\Maven.assets\20210316232240.png)]

  • 和java目录平级的是resources目录,存放各种配置文件
  • 编译文件命令:mvn compile
  • 编译的作用域:整个Hello工程main文件下的所有java文件,以及resources下的文件到target/classes文件夹下
  • 编译的位置:Hello工程目录下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D6h8Vb5G-1617511752028)(D:\Study\For OutClass\Profession\杂\Maven\Maven.assets\20210317121723.png)]

  • 会生成一个target目录,此目录为结果目录
    • 其中的classes保存java代码编译后生成的class文档以及resources下复制过来的文件
    • maven-status存放编译这个文件需要的依赖(包括命令的依赖和java代码的依赖)
    • generated-sourced存放

2.2 pom文件

  • 是项目对象模型,再xml文件中进行声明,以方便构建,pom.xml是maven的核心,是maven的灵魂

  • 基本信息

  • modelVersion:Maven模型的版本,对于Maven2和Maven3而言,只能是4.0.0

  • gav坐标:

    • groupId:组织id,一般是域名的倒写,还可以在此之上写下自己的项目名称

    • artifactId:项目名称、模块名称,对应groupId中的子项目

    • version:版本号,如果项目还在开发中,那么就是不稳定版本。特征:-SNAPSHOT;此外,maven使用三个数字标识

    • packing:项目打包的类型,jar、war、rar、ear、pom。默认是jar

        <!--坐标-->
        <groupId>公司域名的倒写</groupId>
        <artifactId>自定义项目的名称</artifactId>
        <version>自定义版本号</version>
      
  • 依赖:dependencies和dependency

    • jar包是maven中的依赖
    • maven管理jar包的方式是dependency
    • maven中的依赖类似于java中的import
    <dependencies>
        <!-- dependencies下可以管理多个dependency 
    		一个dependency就是一个依赖的项目
    		下面这个是junit的依赖项目,使用gav坐标进行识别-->
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
       <!-- 除此之外,还可以添加别的依赖,比如添加mysql驱动
        只要用dependency标签将mysql驱动的gav坐标进行包裹即可-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.47</version>
    </dependency>
    
    </dependencies>
    
  • 配置属性:properties

    • 用于配置一定的文件属性,例如project.build.Encoding(项目构建源码编码方式),可以设置为UTF-8,防止中文乱码,也可以定义 版本号,便于日后升级
  <properties>
    <project.build.sourceEncoding>UTF8
      </project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>
  • 构建:build
    • 表示与构建相关的配置,例如设置编译插件的jdk版本
<build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值