Maven使用方法核心概念

时间:2022-10-06 17:03:17

Maven使用方法核心概念

????Maven简介

1、软件开发中的阶段

需要分析:分析项目具体完成的功能,有什么要求,具体怎么实现。设计阶段:根据分析的结果,设计项目的使用什么技术,解决难点。开发阶段:编码实现功能,编译代码,自我测试。测试阶段:专业的测试人员,测整个项目的功能十分符合设计要求。出一个测试告。项目的打包,发布阶段:给用户安装项目。

2、Maven能做什么

1)项目的自动构建,帮助开发人员做项目代码的编译,测试,打包,安装,部署等工作。
2)管理依赖(管理项目中使用的各种jar包)。
依赖:项目中需要使用的其他资源,常见的是jar比如项目要使用mysgl驱动,我们就说项目依赖mysgl驱动。

3、没有使用maven怎么管理依赖
管理jar,需要从网络中单独下载某个jar,需要选择正确版本,手工处理jar文件之间的依赖。a.jar里面要使用b.jar的类。

4、什么是maven

maven是apache基金会的开源项目,使用java语法开发。Maven这个单词的本意是:专家,内行。读音是['meIv(e)n]或['mevn]。
maven是项目的自动化构建工具,管理项目的依赖。

✨约定目录结构

maven项目使用的大多人遵循的目录结构,叫做约定目录结构。一个maven项目是一个文件夹。
比如项目叫做Hello
Maven使用方法核心概念

✨maven的使用方式

①maven可以独立使用:创建项目,编译代码,测试程序,打包,部署等等。
② maven和idea一起使用:通过idea借助maven,实现编码,测试,打包等等。

????POM文件

POM:Project Object Model项目对象模型,maven把项目当做模型处理。操作这个模型就是操作项目。maven通过pom.xml文件实现项目的构建和依赖的管理。

pom 文件:即 Project Object Model项目对象模型。 Maven把一个项目的结构和内 容抽象成一个模型,在xml文件中进行声明,以方便进行构建和描述,
pom.xml是Maven的灵魂。所以,maven环境搭建好之后,所有的学习和操
作都是关于pom.xml的。

那么我们来看一下pom.xml文件是什么样的

<?xml version="1.0" encoding="UTF-8"?>
        <!--project是跟标签,后面是约束文件-->
<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">

  <!--pom模型的版本,就是4.0.0-->
  <modelVersion>4.0.0</modelVersion>

  <!--坐标-->
  <groupId>youfei1_v</groupId>
  <artifactId>ch01-Maven-j2se</artifactId>
  <version>1.0</version>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

</project>

✨坐标的概念

坐标组成是groupid,artifiactld,version。坐标概念来自数学。

坐标作用:确定资源的,是资源的唯一标识。在maven中,每个资源都有坐标。坐标值是唯一的。简称叫gav。

拿servlet依赖举例

		<!--servlet依赖-->
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version> 

groupid:组织名称,代码。公司,团体或者单位的标识。这个值常使用的公司域名的倒写。例如:学校的网站www.sanlian.com,groupId:com.sanlian
如果项目规模比较大,也可以是域名倒写+大项目名称。
例如:www.baidu.com , 无人车:com.baidu.appollo

artifactid:项目名称,如果groupId中有项目,此时当前的值就是子项目名。项目名称是唯一的。

version:版本,项目的版本号,使用的数字。三位组成。例如主版本号,次版本号小版本号,例如:5.2.5。
注意:版本号中有-SNAPSHOT,表示快照,不是稳定的版本。

项目使用gav:
1.每个maven项目,都需要有一个自己的gav。
2.管理依赖,需要使用其他的jar,也需要使用gav作为标识。

✨依赖 dependency

依赖:项目中要使用的其他资源(jar)。
需要使用maven表示依赖,管理依赖。通过使用dependency和gav一起完成依赖的使用。

注意:需要在pom.xml文件中,使用dependencies和dependency,还有gav完成依赖的说明。

使用依赖的格式这里拿junit依赖举例,标签中的指的是项目的公司,标签中指的是项目名称,标签中指的是项目的版本。

  <dependencies>
    <!--测试-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
    </dependency>
  </dependencies>

注意标签要放到标签的下面

✨打包类型

标签:项目打包的类型,有jar,war,ear,pom等等,默认是jar。

注意:标签的放置位置是这个项目的坐标下面

例如:

<!--坐标-->
  <groupId>youfei1_v</groupId>
  <artifactId>ch01-Maven-j2se</artifactId>
  <version>1.0</version>
  <packaging>jar</packaging>

????仓库概念

仓库是存东西的,maven的仓库存放的是:
1.maven工具自己的jar包。
2.第三方的其他jar,比如项目中要使用mysql驱动。
3.自己写的程序,可以打包为jar存放到仓库。

✨修改本地仓库位置

本地仓库(本机仓库):位于你自己的计算机,它是磁盘中的某个目录
本地仓库:默认路径,是你登录操作系统的账号的目录中/.m2/repository
C:\Users\NING MEI.m2\repository

修改本地仓库的位置:修改maven工具的配置文件(maven的安装路径\conf\setting.xml)步骤:
1)创建一个目录,作为仓库使用。目录不要有中文和空格。目录不要太深。
例如:D:\oppo
2)修改setting.xml文件,指定到刚刚创建的目录,例如:D:\oppo

实例演示:找到maven安装目录下的conf目录中的settings.xml文件,

Maven使用方法核心概念
在这个文件里面增加这个标签,里面指定新的仓库地址
Maven使用方法核心概念

✨仓库的工作方式

仓库的分类
本地仓库, 就是你的个人计算机上的文件夹,存放各种jar。
远程仓库,在互联网上的,使用网络才能使用的仓库。
①:*仓库,最权威的,所有的开发人员都共享使用的一个集中的仓库,
②:*仓库的镜像:就是*仓库的备份,在各大洲,重要的城市都有镜像。
③:私服,在公司内部,在局域网中使用的,不是对外使用的。

仓库的使用,maven仓库的使用不需要人为参与
如果仓库中有这个jar包就会用,没有就会去互联网上下载,从网络下载的资源,最终会存到本地仓库一份, 当你下次在用的时候,直接从本地仓库首先获取资源。
例如开发人员需要使用mysql驱动,maven首先查本地仓库—>私服—>镜像—>*仓库。

Maven使用方法核心概念

✨配置文件说明

例如:spring依赖和spring-aspects依赖,这些东西表示我们项目中要用到spring和spring-aspects jar包,由maven在仓库中找到这个jar包并使用它。

<!--spring依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.5.RELEASE</version>
    </dependency>

    <!--spring-aspects依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>5.2.5.RELEASE</version>
    </dependency>

注意:执行命令要在项目的pom文件所在的位置执行命名。
Maven使用方法核心概念

✨junit单元测试

单元测试(junit):
junit是一个单元测试的工具,在java中经常使用。
单元:在java中指的是方法。 一个方法就是一个单元,方法是测试的最小单位。
作用:使用junit去测试方法是否完成了要求。开发人员自测。

使用单元测试

  <dependencies>
    <!--测试-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
    </dependency>
  </dependencies>

在src/test/java目录中创建测试类文件。写测试代码,单元测试使用的建议:
1.测试类的定义,名称一般是Test+要测试的类名称
2.测试类它的包名和要测试的类包名一样。
3.在类中定义方法,要测试代码。
方法的定义:public方法,
没有返回值
方法名称自定义(建议Test+测试的方法名称)
方法没有参数
4在测试类中的方法,可以单独执行。测试类也可以单独执行
5.在方法的上面加入@Test

✨生命周期,插件和命令

maven的生命周期:项目构建的各个阶段。包括清理,编译,测试,报告,打包,安装,部署。
插件:要完成构建项目的各个阶段,要使用maven的命令,执行命令的功能是通过插件完成的。插件就是jar,一些类。
命令:执行maven功能是由命令发出的。比如mvn compile

命令:
① mvn clean:清理命令,作用删除以前生成的数据,删除target目录。
插件:maven-clean-plugin,版本是2.5。

②mvn compile:编译命令,执行的代码编译,把src/main/java目录中的java代码编译为class文件,同时把class文件拷贝到target/classes目录。这个目录classes是存放类文件的根目录(也叫做类路径, classpath)
插件:maven-compiler-plugin版本3.1编译代码的插件
maven-resources-plugin版本2.6资源插件,处理文件的。作用是把src/main/resources目录中的文件拷贝target/classes目录中。

③mvn test-compile:编译命令,编译src/test/java目录中的源文件,把生成的class拷贝到target/test-classes目录。同时把src/test/resources目录中的文件拷贝到test-clasess目录
插件:maven-compiler-plugin版本31编译代码的插件
maven-resources-plugin版本2.6资源插件,处理文件的

④mvn test:测试命令,作用执行test-classes目录的程序,测试src/main/java目录中的主程序代码是否符合要求。
插件:maven-surefire-plugin版本2.12.4

⑤mvn package:打包,作用是把项目中的资源class文件和配置文件都放到一个床缩文件中,默认压缩文件是jar
类型的。web应用是war类型,扩展是jar,war的。
插件:maven-jar-plugin版本2.4执行打包处理。生成一个jar扩展的文件,放在target目录下,I
打包的文件包含的是src/main目录中的所有的生成的class和配置文件和test无关。

⑥mvn install:把生成的打包的文件,安装到maven仓库。
插件:maven-install-plugin版本2.4把生成的jar文件安装到本地仓库。

注意:每执行一个命令,都会自动先执行前面的, 例如:执行第二个编译命令,它首先会自动执行清理命令,执行第三个编译test命令,它首先会自动执行第一个清理命令和第二个编译命令。

✨自定义配置插件

在pom.xml文件中,build标签中,设置插件。
例如设置构建项目相关内容
Maven使用方法核心概念
注意:默认使用1.7版本的jdk 通过此方式 可以更改;标签和标签平级。