2022-09-16 第五组 张明敏 学习笔记

目录​​​​​​​

一、Maven简介

1、Maven是什么

2、Maven的作用

3、Maven仓库

4、POM 坐标

5、Maven生命周期

Clean 生命周期

Default (Build) 生命周期

Site 生命周期

常用的命令


一、Maven简介

1、Maven是什么

         Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具。
Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)。
POM (Project ObjectModel) :项目对象模型。


2、Maven的作用

       项目构建:提供标准的、跨平台的自动化项目构建方式。
依赖管理:方便快捷的管理项目依赖的资源(jar包) , 避免资源间的版本冲突问题。不用自己手动去下载jar ,pom文件会自动管理下载好的jar包。
统一开发结构:提供标准的、统一的项目结构。
用来解决导入java类依赖的jar,编译java项目主要问题。
 

3、Maven仓库

仓库分为:

  • 中央(central)

  • 远程(remote)

  • 本地(local)

中央仓库是中心节点,有Maven社区提供,但是各国或各公司网络访问中心仓库速度可能很慢,所以可以自己搭建远程仓库,相当于中央仓库的一个缓存点,加快网络访问速度,还有一个问题,每次都下载jar是非常浪费带宽和时间的,所以在开发者本机也有一个本地仓库,用来缓存jar。

仓库本质就是一个文件夹,用来存放依赖jar等文件。

本地仓库目录默认存放在用户目录下.m2文件下

  • .m2/respository/ 为仓库存放目录

  • .m2/settings.xml 为Maven的设置文件

本地仓库路径修改需要修改setting.xml

<localRepository>C:/MyLocalRepository</localRepository>

远程仓库修改需要修改项目中的pom.xml文件

 <repositories>
      <repository>
         <id>companyname.lib1</id>
         <url>http://download.companyname.org/maven2/lib1</url>
      </repository>
      <repository>
         <id>companyname.lib2</id>
         <url>http://download.companyname.org/maven2/lib2</url>
      </repository>
   </repositories>
  • 中央仓库地址:https://mvnrepository.com/

可以web打开搜索依赖。

Maven依赖的搜索顺序:

  • 本地仓库搜索,搜索到即使用,搜索不到就去中央仓库搜索

  • 中央仓库搜索到则下载缓存到本地仓库,搜索不到则查找配置的远程仓库

  • 如果没配置远程仓库,则报错,配置了远程仓库,则去远程仓库查找

  • 远程仓库搜索到则下载到本地缓存,搜索不到则报错

4、POM 坐标

<project>
    <!-- 模型版本 -->
    <modelVersion>4.0.0</modelVersion>
    <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
    <groupId>com.companyname.project-group</groupId>
    <!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
    <artifactId>project</artifactId>
    <!-- 版本号 -->
    <version>1.0</version>
</project>

5、Maven生命周期

  • 验证 validate 验证项目 验证项目是否正确且所有必须信息是可用的

  • 编译 compile 执行编译 源代码编译在此阶段完成

  • 测试 Test 测试 使用适当的单元测试框架(例如JUnit)运行测试。

  • 包装 package 打包 创建JAR/WAR包如在 pom.xml 中定义提及的包

  • 检查 verify 检查 对集成测试的结果进行检查,以保证质量达标

  • 安装 install 安装 安装打包的项目到本地仓库,以供其他项目使用

  • 部署 deploy 部署 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程

Maven 有以下三个标准的生命周期:

  • clean:项目清理的处理

  • default(或build) :项目部署的处理

  • site:项目站点文档创建的处理

Clean 生命周期

当我们执行 mvn post-clean 命令时,Maven 调用 clean 生命周期,它包含以下阶段:

  • pre-clean:执行一些需要在clean之前完成的工作

  • clean:移除所有上一次构建生成的文件

  • post-clean:执行一些需要在clean之后立刻完成的工作

Default (Build) 生命周期

这是 Maven 的主要生命周期,被用于构建应用,包括下面的 23 个阶段:

  • validate(校验) 校验项目是否正确并且所有必要的信息可以完成项目的构建过程。

  • initialize(初始化) 初始化构建状态,比如设置属性值。

  • generate-sources(生成源代码) 生成包含在编译阶段中的任何源代码。

  • process-sources(处理源代码) 处理源代码,比如说,过滤任意值。

  • generate-resources(生成资源文件) 生成将会包含在项目包中的资源文件。

  • process-resources (处理资源文件) 复制和处理资源到目标目录,为打包阶段最好准备。

  • compile(编译) 编译项目的源代码。

  • process-classes(处理类文件) 处理编译生成的文件,比如说对Java class文件做字节码改善优化。

  • generate-test-sources(生成测试源代码) 生成包含在编译阶段中的任何测试源代码。

  • process-test-sources(处理测试源代码) 处理测试源代码,比如说,过滤任意值。

  • generate-test-resources(生成测试资源文件) 为测试创建资源文件。

  • process-test-resources(处理测试资源文件) 复制和处理测试资源到目标目录。

  • test-compile(编译测试源码) 编译测试源代码到测试目标目录.

  • process-test-classes(处理测试类文件) 处理测试源码编译生成的文件。

  • test(测试) 使用合适的单元测试框架运行测试(Juint是其中之一)。

  • prepare-package(准备打包) 在实际打包之前,执行任何的必要的操作为打包做准备。

  • package(打包) 将编译后的代码打包成可分发格式的文件,比如JAR、WAR或者EAR文件。

  • pre-integration-test(集成测试前) 在执行集成测试前进行必要的动作。比如说,搭建需要的环境。

  • integration-test(集成测试) 处理和部署项目到可以运行集成测试环境中。

  • post-integration-test(集成测试后) 在执行集成测试完成后进行必要的动作。比如说,清理集成测试环境。

  • verify (验证) 运行任意的检查来验证项目包有效且达到质量标准。

  • install(安装) 安装项目包到本地仓库,这样项目包可以用作其他本地项目的依赖。

  • deploy(部署) 将最终的项目包复制到远程仓库中与其他开发者和项目共享。

Site 生命周期

Maven Site 插件一般用来创建新的报告文档、部署站点等。

  • pre-site:执行一些需要在生成站点文档之前完成的工作

  • site:生成项目的站点文档

  • post-site:执行一些需要在生成站点文档之后完成的工作,并且为部署做准备

  • site-deploy:将生成的站点文档部署到特定的服务器上

Maven的所有生命周期都是由插件完成的,你也可以自定义自己的插件,用来实现特定的功能。

常用的命令

# 清理
mvn clean 
# 编译
>mvn compile
# 安装
mvn install
# 先清理再部署
mvn clean deploy
# 生成站点文档
mvn site

1、Maven:项目构建工具,主流 整个项目架构,source,resource,test,testresource 依赖:导入的jar包。 对项目进行打包。

apache基金会

2、作为一个java程序员,有必要连接一下apache的官网命名规则。 项目.apache.org。

配置环境变量: 和JAVA,JDK基本一样。

新建MAVEN_H0ME:maven的安装路径

编辑PATH:新建一个%MAVEN_HOME%\bin 通过CMD:mvn -v测试配置是否成功

这个环境变量,说实话,用处不是很大,不配也没什么大问题!

3、Maven解压后: conf目录,配置目录,在这个目录下有一个settings.xml,Maven的核心配置文件。

maven会自动给我们下载jar包! 在我们的JavaWEB阶段,所有的jar包都是我们下载好复制粘贴到我们的项目里。我们在使用框架开发的过程中,会导入非常多的jar包,jar包要统一管理,“版本”,这些jar包是怎么下载的,从哪下载的?

4、Mysql驱动从哪里下载?

我给你们的所有的jar包,同时我通过maven下载下来的! 最终我们的项目是要打包放到服务器上的! 这些jar包也得跟着一起放上去。 加入说我们的项目需要100个jar包,都复制粘贴到项目里。1M,100M。

我们现在要做的是把这些jar包放在本地,不往项目里导,通过某种方式连接到这些jar包。

通过一个配置文件,找到这些jar包,最终我们往服务器上部署项目的时候,只需要部署我们的源码,和这个配置文件。

5、这些jar包我要让他们保存在哪? 仓库是干什么的?存东西的!

<localRepository>E:/repository</localRepository> 我们通过maven下载的依赖都放在这个位置。需要手动创建这个目录。不要用中文

maven可以联网下载依赖,去哪个网下载? 默认情况下是去maven的中央仓库!在美丽国! 除非你的电脑做了特殊配置,否则基本上下不下来。 可以做一个镜像,阿里云maven镜像仓库,需要配置阿里云镜像仓库

实际上,各大编程工具已经内置了maven,当我们第一次创建maven工程时,会联网自动下载一些Maven本身需要的依赖。

5、src main---源码 java---源码.java resources---资源文件 test---测试源码 java---测试源码.java resources---测试资源文件 pom.xml就是我们上面说的那个配置文件,来管理依赖的。

6、maven生命周期

target目录:存放编译后的java文件 默认(default)真正进行项目编译打包等工作阶段

        1、validate:验证项目是否正确

        2、compile:编译,编译项目的源代码*

        3、test:测试,junit这些测试不应该要求代码被打包或部署

        4、package:进行打包。* java工程-------.jar javaweb工程----.war

        5、verify:验证,对集成测试结果执行检查

        6、install:安装* 所有的项目都可以编程jar包(依赖)

        7、deploy:部署,将最终的包赋值到远程存储库,和其他开发人 员共享(maven私服) 清理(clean)执行必要的清理工作。删除target文件夹 站点(site)生成项目报告,站点,发布站点(基本不用)

7、Maven坐标:

GroupId:团体组织标识符,它一般情况下以创建这个组织的名称的逆向域名开头。 ArtifactId:项目名。单独项目的唯一标识符。

Version:版本 通过这三个向量来定位Maven仓库中其jar包所在的位置,把对应的jar包引入到工程中。

8、依赖范围: compile:默认。

编译范围,编译,测试,运行都有效。参与打包,安装。

test:测试范围,只有在test范围下才能用,不参与打包,安装。

provided:编译和测试,不参与打包,安装。

runtime:运行,只参与运行。 system:废弃。系统。

import:废弃。引入。

9、依赖的传递:(常识性问题) 假如demo01中引入了mysql,servlet,fastjson,codec依赖,我把demo01install到了我的本地仓库,或者是maven私服,如果其他成员通过GAV引入了我的demo01,demo01中的mysql,servlet,fastjson,codec会不会一起引入进来??? 会!!!!!

10、Gradle:安卓领域,据说未来会取代maven Ant:淘汰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值