I want to make big money.|

2022-9-16 Maven 学习笔记

一、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依赖的搜索顺序:

  1. 本地仓库搜索,搜索到即使用,搜索不到就去中央仓库搜索
  2. 中央仓库搜索到则下载缓存到本地仓库,搜索不到则查找配置的远程仓库
  3. 如果没配置远程仓库,则报错,配置了远程仓库,则去远程仓库查找
  4. 远程仓库搜索到则下载到本地缓存,搜索不到则报错

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:淘汰

本文作者:(≧∇≦)(≧∇≦)(≧∇≦)

本文链接:https://www.cnblogs.com/gycddd/p/16710445.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   (≧∇≦)(≧∇≦)(≧∇≦)  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起