maven 通篇学习

Maven

Maven简介

  • maven官网

  • 软件工程

    • 在设计和构建软件时能够有一种规范和工程化的方法
  • maven是自动化构建工具

  • 传统的完成一个java项目:

    • 第一步:分析项目的组成部分
    • 第二步:设计项目的步骤,技术,事件,人力
    • 第三步:组建团队,购置设备
    • 第四步:开发代码,开发人员测试代码(重复多次的工作)
      • 测试人员测试功能是否符合要求
      • 测试人员测试开发人员提交的代码->开发人员修改->开发人员修改.....测试代码通过
    • 缺点:
      • 很多模块,模块之间的关系管理麻烦
      • 需要很多第三方功能,需要很多jar包,手工下载
      • 需要管理jar的版本
      • 管理依赖,jar之间的依赖 a.jar需要b.jar这个关系称为依赖
  • maven完成一个java项目:

    • 优点:
      • maven可以管理jar文件
      • 自动下载jar和他的文档,源代码
      • 管理jar直接的依赖
      • 管理jar的版本
      • 编译程序,把java编译成class
      • 测试程序
      • 把包文件形成jar文件,或者是war文件
      • 部署项目
  • 构建:项目的构建

    • 构建是面向过程的,一些步骤,完成项目代码的编译,测试,运行,打包,部署等
      • 第一:清理
        • 将之前的项目清理
      • 第二: 编译
        • 将程序源代码编译为可执行的代码 java-class文件
        • 批量的编译
      • 第三:测试
        • 执行测试程序代码,验证程序是否正确
        • 批量的测试
      • 第四: 报告
        • 生成测试结果的报告
      • 第五: 打包
        • 将项目中所有的class文件,配置文件等所有的资源放到一个压缩文件当中
        • java文件放到jar包中,web文件放到war包中
      • 第六: 安装
        • 将生成的文件jar,war安装到本机仓库中
      • 第七: 部署
        • 把程序安装好就可以执行了

Maven核心概念

  • 第一个: POM

    • 一个文件,名称是pom
    • 翻译是: 项目对象模型
    • maven把一个项目当做一个模型使用.
  • 第二个:约定的目录结构

    • maven项目的目录和文件的位置是有规定的
  • 第三个: 坐标

    • 是一个唯一的字符串,用来表示资源的
  • 第四个:依赖管理

    • 管理项目中可以使用的jar文件
  • 第五个:仓库管理 (了解)

    • 资源存放的位置
  • 第六个:声明周期 (了解)

    • Maven构建项目的过程
  • 第七个:插件和目标 (了解)

    • 执行maven构建的时候用的工具
  • 第八个:继承

  • 第九个:聚合

  • 注意: maven的使用,是先难后易的,后期可以在idea中使用

  • maven工具的安装和配置

    • 第一步:官网下载 http://maven.apache.org/
      • apache-maven-3.8.5
    • 第二步:解压压缩包
      • 子目录:
        • bin: 执行程序,主要是mvn.cmd
        • conf:maven工具开发本身的配置文件 settings.xml
    • 第三步:配置环境变量
      • 在系统的环境变量中
        • M2_HOME的名称,指定它的值是maven工具安装目录,bin之前的目录
        • M2_HOME=D:\JavaDev\apache-maven-3.8.5
        • 再把M2_HOME加入到path之中,在路径中加入%M2_HOME%\bin
        • 验证:
          • 在新的命令行中执行:mvn -v
          • Apache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0)
            Maven home: D:\JavaDev\apache-maven-3.8.5
            Java version: 1.8.0_311, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_311\jre
            Default locale: zh_CN, platform encoding: GBK
            OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
          • 成功配置

Maven工程约定目录结构

  • 约定是大家遵循的一种目录结构
  • 每一个maven项目在磁盘上都是文件夹 (项目)
  • 实例:
    • Hello/
      • /src
        • /main 放置主程序
          • /java java文件
          • /resources 使用的配置文件
        • /test 放置测试程序代码和文件的(可以没有)
          • /java 测试java文件
          • /resources 测试使用的配置文件
      • /pom.xml maven的核心文件
    • 疑问:mvn compile 编译src/main目录下的所有java文件
      • 为什么要下载:
        • maven工具执行的操作需要很多的插件(java类--jar文件)完成的
      • 下载什么:
        • 插件(java类--jar文件)
        • 完成某些功能
      • 下载存放的位置:
        • C:\Users\92822.m2\repository
        • 默认仓库(本机仓库) 路径可以改
    • 执行的结果;
      • 在项目的根目录下生成target目录(结果目录)

仓库

  • 设置本机存放资源的位置:
    • 第一步:修改maven的配置文件 maven安装目录/conf/settings.xml
      • 修改前先备份
    • 第二步:修改localRepository 指定你的目录(不要使用中文目录)
  • 仓库的定义:
    • 仓库是存放东西的,存放maven的插件,项目要使用的jar包
    • maven插件 ---jar包
    • 项目使用的jar----第三方的工具
  • 仓库的分类:
    • 本地仓库:
      • 个人计算机上的文件夹 存放各种jar
    • 远程仓库:
      • 在互联网上的,使用网络才能使用的
        • 中央仓库 central
        • 中央仓库的镜像
          • 中央仓库的备份
          • 在各大洲或者各大城市都有备份
        • 私服
          • 在公司的局域网中使用,不对外使用
  • 仓库的运用:
    • maven仓库的使用不需要人为的参与
    • 开发人员要使用mysql驱动-->maven首先查本地仓库-->私服-->中央仓库的镜像-->中央仓库
      • 一级一级查找

POM文件

  • Project Object Model 项目对象模型

    • modelVersion

      • Maven模型的版本,4.0.0
    • groupId

      • 组织名称 一般是公司域名的倒写
      • 例如: com.baidu 域名+项目名 com.baidu.appolo
    • artifactId

      • 项目名称 也是模块的名称 对应groupId中项目的子项目
    • version

      • 版本号
      • 一般使用三位数字表示 如 1.0.0
      • -SNAPSHOT 不稳定版本 快照

    注意: groupId artifactId version组合起来是坐标

    • packaging
      • 项目打包的类型
      • 可以是jar war rar ear pom 默认是jar
    • dependencies 和 dependendency
      • 依赖 相当于import
      • 管理需要用到的各种资源说明
      • 如: mysql驱动
    • properties
      • 定义配置属性
    • build
      • maven在进行项目的构建时,一些配置信息
    • parent
      • 继承
    • modules
      • 聚合

坐标

Maven的生命周期

  • maven构建项目的过程

  • 清理

  • 编译

  • 测试

  • 报告

  • 打包

  • 安装

  • 部署

Maven的常用命令

  • 独立使用时:

    • 通过命令,完成maven的生命周期
  • 常用的命令:

    • 第一个: mvn clean

      • 清理
      • 清理原有的项目目录,即是target目录
    • 第二个:mvn compile

      • 编译src下的java主程序文件
      • 生成的class文件,同时放到target/classes目录下面
      • 把main/resources目录下的所有文件 拷贝到target/classes目录之下
    • 第三个: mvn test-compile

      • 编译test下的java文件
    • 第四个:mvn test

      • 测试
      • 生成一个目录surefire-reports
      • 保存测试结果
    • 第五个:mvn package

      • 打包主程序
      • 只包含main目录下的java主程序的class文件
    • 第六个: mvn install

      • 安装主程序
    • 第七个:mvn deploy

      • 部署主程序

        注意:执行以上命令必须在命令行进入pom.xml所在目录

        注意: pom.xml文件中只有一个其他需要添加的依赖

  • 单元测试:

    • junit

      • 专门测试的框架( 工具 )

      • 内容

        • 类中的方法,每一个方法都是独立测试的
        • 方法是测试的基本单位(叫做单元)
      • 批量的测试类中的大量方法

      • 使用步骤

        • 第一步:在pom.xml文件中加入单元测试依赖

          • junit junit 4.12 test
        • 在maven项目中的src/test/java目录下,创建测试程序

          • 推荐的创建类和方法的提示:
            • 测试类的名称,是Test+测试的类名
            • 测试的方法名称,是test + 方法名称
        • 例如:测试Hello

          • 创建测试类 TestHello

          • 创建测试方法

            • @Test

            • public void testAdd(){

              ​ 测试HelloMaven的add方法是否正确

              }

            其中testAdd叫做测试方法,他的定义规则

            • ​ 1,方法是public ,必须的
            • 2,方法没有返回值, 必须的
            • 3,名称是自定义的 推荐是 testAdd
            • 4,在方法的上面加入@test

Maven插件

  • maven命令执行时真正执行的是插件 plugin

    • 就是一些jar文件,一些类
    • 在pom的文件中配置build
  • 第一个:compile插件

    • maven-compiler-plugin
    • 编译插件
    <!-- 控制配置maven构建项目的参数设置,配置jdk的版本 -->
        <build>
            <!-- 配置插件 -->
            <plugins>
                <!-- 配置具体的插件 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <!-- 插件的名称 -->
                    <artifactId>maven-compiler-plugin</artifactId>
                    <!-- 插件的版本 -->
                    <version>3.8.5</version>
                    <!-- 配置插件的信息 -->
                    <configuration>
                        <!-- 告知jdk1.8 -->
                        <source>1.8</source>
                        <!-- 告知运行在jdk1.8的jdk上 -->
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
  • 第二个:test插件

    • maven-compiler-plugin
    • 同主程序插件是相同的,但是执行的目标不同
  • 第三个:package插件

    • maven-jar-plugin
    • 将class文件,配置文件打包
  • 第四个:install 安装插件

    • maven-install-plugin
  • 第五个:deploy 发布插件

在IDEA使用Maven构建项目

  • 在idea中设置maven

    • 一般不使用idea内置的maven (不好修改设置)

    • 步骤:

      • 第一步:设置maven

          1. settings 为当前项目设置maven

            • flie---->settings---->Build,Execution,Deployment---->Build Tools---->maven
            • maven Home path : maven安装的目录
            • User home File : 就是maven安装目录conf/setting.xml文件
            • Local Repository: 本机仓库的目录位置

            ---Build Tools-Maven-Runner--

            VM Options : -DarchetypeCatalog=internal

            • maven的项目在创建时会下载模板文件,比较慢,使用这个会调用内置的模板文件

              JRE:你项目的jdk

          1. other settings 为以后的项目设置maven

            • flie---->New projects setup---->setting for new projects---->Build,Execution,Deployment---->Build Tools---->maven
            • maven Home path : maven安装的目录
            • User home File : 就是maven安装目录conf/setting.xml文件
            • Local Repository: 本机仓库的目录位置

            ---Build Tools-Maven-Runner--

            VM Options : -DarchetypeCatalog=internal

            • maven的项目在创建时会下载模板文件,比较慢,使用这个会调用内置的模板文件

            JRE:你项目的jdk

            注意:两个settings的设置是一样的

      • 第二步:使用模板创建项目

        • maven-archetype-quickstart 普通的java项目
        • maven-archetype-webapp web工程项目
  • 导入maven项目

    • 直接在projects structure中设置

依赖管理

  • 依赖的范围

    • scope表示
      • scope的值有compile test provided
    • scope在maven构建项目的哪些阶段中起作用
      • maven构建项目有clean compile test package install deploy
  • junit的范围是 test

    • <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
      </dependency>
      
  • 默认是compile都存在

  • provided

    • compile
    • test
    • 这两个阶段都要用到

maven的常用操作

  • 第一个:maven的属性设置

    • 设置maven的常用属性
  • 第二个:maven的全局变量

    • 自定义的属性
    • 1,在 通过自定义标签自定义变量(标签名就是变量名)
    • 2,在pom.cml文件中的其他位置,使用$(标签名)使用变量的值
  • 自定义全局变量一般是定义 依赖的版本号 当你的项目要使用多个相同的版本号时,

    先使用全局变量定义,在使用$(变量名)

  • 第三个:资源插件

    •     <!-- 控制配置maven构建项目的参数设置,配置jdk的版本 -->
          <build>
              <!-- 配置插件 -->
              <resource>
                  ........
              </resource>
          </build>
      
    • 作用:mybatis需要用到这个作用

      • 1,默认没有使用resources的时候,maven执行编译代码时,会把src/main/resources目录下的文件拷贝到target/classes目录下, 对于src/main/java目录下的非java文件不处理,不拷贝到target/classes目录中

      • 2,我们需要把一些文件放到src/main/java目录下,需要拷贝到target/classes目录

        此时就需要在中加入插件.

posted @ 2022-11-24 11:38  zhanggw1  阅读(54)  评论(0)    收藏  举报