Maven

内容管理

  • Maven
    • 构建项目
    • 软件工程
    • Maven工具的安装和配置
    • Maven core
      • POM 【program object model】项目对象模型
      • 约定的目录结构 【maven编写项目的常见问题】
      • 坐标gay
      • 依赖管理【dependencies(管理)----> dependency(依赖从属)】
      • 仓库管理
      • 生命周期
      • ....Maven常用的命令
      • 插件
      • 继承和聚合
    • 单元测试框架Junit【测试方法】

Javaweb — 现在准备沉淀一下进入框架


Maven


JQuery虽然都说过时了,但是真的还是比JS高明了许多,特别是对于AJAX的简化;而JDK的动态代理则是基于反射实现了动态扩展而不改变原有的功能【但是必须要有接口】

maven是一个辅助的管理项目的工具【just 辅助】;最主要的功能–> 管理依赖(下载管理项目的jar包;Maven Repository: Search/Browse/Explore (mvnrepository.com);在这里面就可以找到;通过gruopId、artifactId、version可以唯一找到一个资源jar包);第二个便是项目的构建(编译、测试、打包、部署)

而其使用方式: 1. 通过命令行窗口使用lib命令完成比如编译命令【mvn -compile】来完成操作 2.配置开发工具使用,比如IDEA、Eclipse,非常简单快捷

Maven

在最开始写java的基础的简单的项目的时候,就会有提示,是否创建Maven,那么什么是Maven呢?

传统的项目 :

  1. 有很多模块、模块之间有关系、手工管理关系,比较繁琐
  2. 需要很多第三方功能,所以需要直到很多jar文件,需要从网络中获取各个jar,比如mysql,servlet等【jar文件中有很多的class类】
  3. 需要管理jar的版本,比如需要5.0,那就不能使用4.0的;因为版本冲突会出现问题
  4. 管理jar文件之间的依赖。比如要使用a.jar,必须使用b.jar中的类,必须要先得到b.jar,然后次啊能使用a.jar;a.jar和b.jar的关系就是依赖,就两者有关系就产生了依赖,比如a.jar依赖b.jar;项目依赖mysql驱动【因此开发项目需要对各jar包之间的依赖关系非常清楚,但这很耗费时间,所以如果能有工具帮忙就好了】

所以需要使用Maven来改进项目

  1. mavaen可以管理jar文件
  2. 自动下载jar和他的文档,源代码
  3. 管理jar直接的依赖,a.jar需要b.jar,maven会自动给下载b.jar
  4. 管理需要的jar的版本
  5. 自动编译程序和测试程序
  6. 帮助打包文件,形成jar文件、或者war文件
  7. 还能够帮助部署项目

这样开发者就只需要写功能代码即可

构建项目

构建是面向过程的,就是一些步骤,完成代码的编译、测试、运行、打包、部署等;maven支持的有

  1. 清理 : 将之前项目的编译的文件删除,为新的编译代码做准备
  2. 编译 :把程序源代码编译为执行代码,java—>class文件【这是批量操作,javac一次只能编译一个】
  3. 测试: maven可以只从测试程序代码,验证功能是否正确【批量操作,同时测试多个测试代码,测试多个功能】
  4. 报告 : 生成测试结果的文件,测试是否通过的信息
  5. 打包: 将项目中的所有的class文件,配置文件等所有资源放到一个压缩文件中,如果都是普通的java程序,那么就是jar文件,web应用就是war文件 ---- 一个文件就是一个独立的功能了
  6. 安装 : 将5中生成的压缩文件安装到本机仓库
  7. 部署: 把项目安装好可以执行

软件工程

再介绍这个知识之前,先来提出一个概念:软件工程【刚好下学期有这个课程,到时候会单独再介绍一下的】 日常生活中,有很多的工程项目,比如桥梁工程;工程就是各个行业的从业人员通过总结的规律和方法,以最小的代价做出最大的成效。 所谓的桥梁工程就是人们通过经验和总结得出的 — 用来建造桥梁最高效的方法,这种方法是可复用的。将这种思想抽象到软件领域,就变成了软件工程

软件工程 ---- 为了实现软件的流水线式生产,设计和构建软件时能够有一种规范和工程化的方法就是软件工程

完成一个java项目需要做的工作 :

分析项目的需求、分析功能 ----->设计项目,通过哪些步骤,使用哪些技术,需要多少人,多长的时间—> 组建团队、购置设备、服务器、…… ------> 开发人员需要测试自己的代码、重复多次的工作----> 测试人员进行测试 -----> 有问题返回给开发—>重复过程直到测试代码通过

Maven工具的安装和配置

首先就是在官网下载maven,因为下载的java的版本就很新,所以这里就直接下载的最新版本,如果到时候不兼容再说,下载的网址放到这里: Maven – Download Apache Maven

第二步就是解压缩安装包了;这里将其解压到一个给中文的目录;解压之后就可以发现其约定的目录结构了;真的和tomcat有些类似,下面有bin、boot、cong、lib等文件夹 — bin目录就是程序执行的命令,最主要的就是mvn.cmd;再conf中存放的是配置文件settings;lib中iu是很多的jar文件,maven是用java编写的,所以一定要有JDK才能够正常运行

最后就是要配置环境变量: 在系统的环境中,指定一个MAVEN_HOME的名称,其值为maven的安装路径,不到bin; 之后再在系统路径中增加%MAVEN_HOME%\bin 所谓的配置环境变量的目的就是为了更加方便执行程序的bin中的命令; 如果不配置只能到对应程序的bin目录下打开cmd窗口运行,配置之后就可以直接打开cmd窗口运行,从配置java、Mysql、Tomcat、Maven都是这个目的,先建立一个对应的HOME、路径为程序安装路径,bin的上一级目录; 之后再在路径中配置%?_HOME%/bin就算配置成功了

验证是否配置成功,就在cmd窗口中输入maven的命令, mvn -v

C:\Users\OMEY-PC>mvn -v;
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: D:\Maven\apache-maven-3.8.4
Java version: 16, vendor: Oracle Corporation, runtime: D:\jdk-16
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

需要注意的是,这里一定要要有JDK的路径,不然maven是无法正常执行的

Maven core

POM 【program object model】项目对象模型

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apche.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">               <modelVersion>4.0.0</modelVersion>
</project>可以看到这个xml文件的最高级的标签就是project --- 就是将项目给抽象成了一个模型

om.xml是Maven的核心;也就是将管理的项目看作一个模型

POM是一个文件,这个文件的名称为pom.xml;maven将一个项目当作一个模型来使用,通过这个文件可以控制maven构建项目的过程,管理jar的依赖;其中更可以配置各种标签,包括项目的坐标、JDK的版本、编译的encoding

其下由很多重要的标签

基本名称

  • modelVersion : Maven模型的版本,对于maven2和maven3来说,就是4.0.0;就是给项目设定的版本就是4.0
  • groupId : 组织ID,一般是公司域名的倒写,格式可以是域名倒写或者域名倒写+项目名 : 比如com.baidu; com.baidu.appole; per.cfeng.ICQ
  • artifactID: 项目的名称,也就是模块module的名称【最开始创建项目的时候就将一个项目看成一个module】对应的groupId下面的子项目,这也是唯一的
  • version : 项目的版本号,如果项目还在开发中,是不稳定版本,通常就在版本后带-SHAPSHOT; version使用三位数字表示; 1.1.0 ---- 代表项目迭代的版本
  • packaging : 项目打包的类型 ,可以是jar包,war包【web应用】、ear包、pom包,默认是普通的java程序jar包

依赖 : dependencies ---- 管理 和dependency — 从属,依赖, : 项目要使用的各种资源的说明,比如要使用mysql驱动

因为这个pom.xml就是项目对象模型,其中最大的标签就是project;代表就是项目

  • dependencies : 项目管理的所有的从属jar包,也就是依赖,,比如这里可以演示在pom.xml中配置一个mysql驱动 ; 以后就不需要将jar包一个一个导入到项目了,直接使用maven管理即可
<dependcies><!-- 依赖, 相当于在java代码中import配置jar包 --><dependency><!-- 通过标识可以在互联网中唯一标识一个资源 --><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.27</version></dependency>
</dependcies>

配置属性

  • properties : 这个标签用来定义一些配置属性的,比如project.build.sourceEncoding【项目的编码方式】,可以设置为UTF-8,防止中文乱码,也可以定义相关构建版本号,便于统一升级;比如Java的版本
<properties><!-- 这里的{jdk_version}填入你的jdk版本,我使用的是openjkd16 --><maven.compiler.target>16</maven.compiler.target><maven.compiler.source>16</maven.compiler.source><!--指定项目的编码方式 --><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>

构建