Java开发者必备:Maven简介及使用方法详解!

发布时间:2023-12-07 17:24:15

今天,我们将介绍Java开发中一个非常重要的工具——Maven。如果你是Java开发者,你不会对Maven感到陌生。然而,对于一些新手来说,他们可能不太了解什么是Maven,它的功能是什么,以及如何使用它。接下来,让我们深入了解Maven!

一、maven简介Maven是什么?

Maven是一种包含项目对象模型的项目管理工具 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),依赖管理系统(Dependency Management System),用于操作和定义生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。基于Antttaven的maven 施工工具,Ant Maven的一些功能 所有这些都添加了其他功能。image.pngMaven提供了一套标准化的项目结构,所有IDE使用Maven构建的项目结构完全相同,所有IDE创建的Maven项目都可以通用。

Maven是专门用于管理和构建Java项目的工具,其主要功能是:

  • 提供了一套标准化的项目结构

  • 提供一套标准化的施工过程(编译、测试、包装、发布) …)

  • 它提供了一套依赖管理机制

Maven作用

项目建设管理:maven为项目生命周期管理提供一套标准,开发人员和测试人员统一使用maven进行项目建设。项目生命周期管理:编译、测试、包装、部署和运行。

  • 管理依赖(jar包):maven可以帮助我们统一管理项目开发所需的jar包。

  • 管理插件:maven可以帮助我们统一管理项目开发过程中所需的插件。

二、maven仓库

使用过maven的学生都知道maven可以通过pomven。.xml中的配置可以获得所需的jar包,但这些jar在哪里?我们从哪里得到这些jar包?答案是仓库。

仓库分为:本地仓库、第三方仓库(私人服务)和中央仓库。image.png

1、本地仓库

本地仓库:计算机中的文件夹定义为哪个文件夹。Maven将从远程下载工程中依赖的组件(Jar包)到本机目录进行管理。

默认情况下,maven仓库是$user.home/.m2/repository目录。

本地仓库的位置可以在$MAVEN_HOME/conf/setting.在xml文件中修改。

在文件中找到localRepository目录,修改相应内容<localRepository>D:/maven/r2/myrepository</localRepository>
2、中央仓库

中央仓库:https在线地址:///repo1.maven.org/maven2//

这个公共仓库由Maven自己维护,里面有很多常用的仓库,包括世界上大多数流行的开源项目组件。如果没有本地仓库,默认从中央仓库下载。

由于maven的中央仓库在国外,下载速度相对较慢,因此需要配置国内镜像地址。

在配置文件中找到miror标签,并添加以下内容。

<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror>
3、第三方仓库(私服)

第三方仓库,又称内部中心仓库,又称私人服务。

私人服务:一般由公司自己设立,仅供公司内部共享。它不仅可以作为公司内部部件的合作和归档,还可以作为公共仓库的镜像缓存,以减少外部访问和下载的频率。公司开发的私人jar可以放置在私人服务中。(使用私人服务来减少对中央仓库的访问)

注:连接私人服务,需要单独配置。未配置私人服务的,默认不使用

三、Maven坐标

什么是坐标?Maven中的坐标是资源的唯一标志,用坐标来定义项目或引入项目所需的依赖。image.png

Maven坐标的主要成分:

  • groupId:定义当前Maven项目下属的组织名称(通常是域名反写,例如:com.baidu)

  • artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)

  • version:定义当前项目版本号

你还在担心找不到真正的免费编程学习平台吗?你可以试试云源思考!课程视频、在线书籍、在线编程、实验场景模拟、一对一咨询。。你想要的所有学习资源都在这里,重点是免费!点击此处立即查看

Maven的三套生命周期是什么?

在Maven出现之前,项目建设的生命周期已经存在,软件开发人员每天都在清理、编译、测试和部署项目。虽然每个人都在做建筑工作,但公司、公司、项目和项目经常以不同的方式做类似的工作。image.pngMaven的生命周期是抽象和统一所有的施工过程。Maven从大量的项目和施工工具中学习和反思,然后总结出一套高度完美、易于扩展的生命周期。

这个生命周期包括几乎所有的建设步骤,如项目清理、初始化、编译、测试、包装、集成测试、验证、部署和网站生成。

Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际工作。在Maven的设计中,实际任务(如源代码编译)由插件完成。

Maven三套生命周期

Maven有三个独立的生命周期,即clean、default和site。image.png

clean生命周期

clean生命周期的目的是清理项目,包括三个阶段:

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

  • clean 清理上次构建生成的文件

  • post-clean 执行一些清理后需要完成的工作

default生命周期

default生命周期定义了真正构建项目所需的所有步骤,是所有生命周期的核心部分。重要阶段如下:

  • compile :一般来说,SRC//main从java目录下的java文件到项目输出的主classpath目录

  • test :使用单元测试框架进行操作测试,测试代码不会打包或部署

  • package :接收编译代码,打包成可发布的格式,如jar和war

  • install:其他maven项目将包装安装在当地仓库中

  • deploy :将最终的包复制到远程仓库,供其他开发人员或maven项目使用

site生命周期

site生命周期的目的是建立和发布项目网站。基于pom文件中包含的项目信息,maven可以自动生成友好网站,方便团队交流和发布项目信息。生命周期中最重要的阶段如下:

  • site :生成项目站点文件

  • Maven生命周期相关命令

  • mvn clean:调用clean生命周期的clean阶段,清理上次构建项目生成的文件

  • mvn compile :src//编译mainjava代码/java

  • mvn test :在test中编译和运行内容

  • mvn package:将项目打包成可发布的文件,如jar或war包;

  • mvn install :将项目发布到当地仓库

Maven生命周期相关插件

Maven的核心包只有几兆大小,只定义了抽象的生命周期。生命周期的每个阶段都由插件完成,必要时下载并使用插件,例如,我们正在执行mvnn compile命令实际上是在调用mavencompile插件进行编译。

使用IDEA创建maven项目后,我们不需要手动输入maven命令来构建maven的生命周期。IDEA为每个maven构建项目生命周期的各个阶段提供了图形界面的操作模式。

具体操作如下:

  • 打开Maven视图:依次打开Tool Windows–>Maven Projects

  • 执行命令:双击Lifecycle下的相关命令图标执行相应的命令(或单击操作按钮)image.png

五、maven版本规范

maven使用以下元素来定位某个jar:

-Group ID:公司名称。公司域名倒着写。

  • Artifact ID:项目名

  • Version:版本

发布的项目有一个固定的版本标志来指向项目的特定版本。在版本管理中,maven可以使用几个特殊的字符串SNAPSHOT,LATEST ,RELEASE。比如"1.0-SNAPSHOT"。

各部分的含义和处理逻辑如下:

  • SNAPSHOT 正在开发的项目可以使用一个特殊的标志,在版本中添加一个标志"SNAPSHOT"的标记。

  • LATEST 指特定部件的最新发布,可以是发布版,也可以是snapshot版,具体看什么时候结束。

  • RELEASE 指最后一个发布版。

6.maven项目之间的关系取决于关系
  • 标签将另一个项目的jar引入当前项目

  • 自动下载另一个项目所依赖的其他项目image.png

继承关系
  • 父项目为pom类型,子项目jar 或者war,如果子项目是其他项目的父项目,子项目也是pom 类型。

  • 继承关系后,子项目标签出现

  • 如果子项目与父项目相同,则可以在子项目中不配置父项目pom.xml 没有子项目,逻辑上有父子项目关系。

父项目<groupId>cn.zanezz.cn</groupId>    <artifactId>demoparent</artifactId>    <packaging>pom</packaging>    <version>1.0-SNAPSHOT</version>    子项目    <parent>        <artifactId>demoparent</artifactId>        <groupId>cn.zanezz.cn</groupId>        <version>1.0-SNAPSHOT</version>    </parent>    <modelVersion>4.0.0</modelVersion>    <packaging>war</packaging>    <artifactId>child2</artifactId>
聚合关系
  • 前提是继承关系,父项目将子项目纳入父项目。

  • 子项目的类型必须是Maven Module 而不是maven project

  • 新建聚合项目子项目时,点击父项目右键新建Maven Module

pom在子项目中.xml<parent>        <artifactId>demoparent</artifactId>        <groupId>cn.zanezz.cn</groupId>        <version>1.0-SNAPSHOT</version>    </parent>    pom是父项目中的pom.xml    <groupId>cn.zanezz.cn</groupId>    <artifactId>demoparent</artifactId>    <packaging>pom</packaging>    <version>1.0-SNAPSHOT</version>    <modules>        <module>child1</module>        <module>child2</module>    </modules>
聚合项目和继承项目的区别
  • 在语义上,聚合项目的父项目与子项目关系较强;

  • 在语义上,单纯继承项目的父项目与子项目关系较弱。

Maven是一个非常强大的工具,它可以帮助我们更好地管理和构建Java项目。如果你是Java开发人员,你不能错过这个工具。我希望这篇文章能帮助你更好地理解和使用Maven。我希望你在Java开发的道路上越走越远!

上一篇 228-layui,清空laydate的值
下一篇 内部类

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题