今天,我们将介绍Java开发中一个非常重要的工具——Maven。如果你是Java开发者,你不会对Maven感到陌生。然而,对于一些新手来说,他们可能不太了解什么是Maven,它的功能是什么,以及如何使用它。接下来,让我们深入了解Maven!
一、maven简介Maven是什么?Maven是一种包含项目对象模型的项目管理工具 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),依赖管理系统(Dependency Management System),用于操作和定义生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。基于Antttaven的maven 施工工具,Ant Maven的一些功能 所有这些都添加了其他功能。Maven提供了一套标准化的项目结构,所有IDE使用Maven构建的项目结构完全相同,所有IDE创建的Maven项目都可以通用。
Maven是专门用于管理和构建Java项目的工具,其主要功能是:
提供了一套标准化的项目结构
提供一套标准化的施工过程(编译、测试、包装、发布) …)
它提供了一套依赖管理机制
项目建设管理:maven为项目生命周期管理提供一套标准,开发人员和测试人员统一使用maven进行项目建设。项目生命周期管理:编译、测试、包装、部署和运行。
管理依赖(jar包):maven可以帮助我们统一管理项目开发所需的jar包。
管理插件:maven可以帮助我们统一管理项目开发过程中所需的插件。
使用过maven的学生都知道maven可以通过pomven。.xml中的配置可以获得所需的jar包,但这些jar在哪里?我们从哪里得到这些jar包?答案是仓库。
仓库分为:本地仓库、第三方仓库(私人服务)和中央仓库。
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中的坐标是资源的唯一标志,用坐标来定义项目或引入项目所需的依赖。
Maven坐标的主要成分:
groupId:定义当前Maven项目下属的组织名称(通常是域名反写,例如:com.baidu)
artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
version:定义当前项目版本号
Maven的三套生命周期是什么?你还在担心找不到真正的免费编程学习平台吗?你可以试试云源思考!课程视频、在线书籍、在线编程、实验场景模拟、一对一咨询。。你想要的所有学习资源都在这里,重点是免费!点击此处立即查看
在Maven出现之前,项目建设的生命周期已经存在,软件开发人员每天都在清理、编译、测试和部署项目。虽然每个人都在做建筑工作,但公司、公司、项目和项目经常以不同的方式做类似的工作。Maven的生命周期是抽象和统一所有的施工过程。Maven从大量的项目和施工工具中学习和反思,然后总结出一套高度完美、易于扩展的生命周期。
这个生命周期包括几乎所有的建设步骤,如项目清理、初始化、编译、测试、包装、集成测试、验证、部署和网站生成。
Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际工作。在Maven的设计中,实际任务(如源代码编译)由插件完成。
Maven三套生命周期Maven有三个独立的生命周期,即clean、default和site。
clean生命周期clean生命周期的目的是清理项目,包括三个阶段:
pre-clean 在清理前执行一些需要完成的工作
clean 清理上次构建生成的文件
post-clean 执行一些清理后需要完成的工作
default生命周期定义了真正构建项目所需的所有步骤,是所有生命周期的核心部分。重要阶段如下:
compile :一般来说,SRC//main从java目录下的java文件到项目输出的主classpath目录
test :使用单元测试框架进行操作测试,测试代码不会打包或部署
package :接收编译代码,打包成可发布的格式,如jar和war
install:其他maven项目将包装安装在当地仓库中
deploy :将最终的包复制到远程仓库,供其他开发人员或maven项目使用
site生命周期的目的是建立和发布项目网站。基于pom文件中包含的项目信息,maven可以自动生成友好网站,方便团队交流和发布项目信息。生命周期中最重要的阶段如下:
site :生成项目站点文件
Maven生命周期相关命令
mvn clean:调用clean生命周期的clean阶段,清理上次构建项目生成的文件
mvn compile :src//编译mainjava代码/java
mvn test :在test中编译和运行内容
mvn package:将项目打包成可发布的文件,如jar或war包;
mvn install :将项目发布到当地仓库
Maven的核心包只有几兆大小,只定义了抽象的生命周期。生命周期的每个阶段都由插件完成,必要时下载并使用插件,例如,我们正在执行mvnn compile命令实际上是在调用mavencompile插件进行编译。
使用IDEA创建maven项目后,我们不需要手动输入maven命令来构建maven的生命周期。IDEA为每个maven构建项目生命周期的各个阶段提供了图形界面的操作模式。
具体操作如下:
打开Maven视图:依次打开Tool Windows–>Maven Projects
执行命令:双击Lifecycle下的相关命令图标执行相应的命令(或单击操作按钮)
maven使用以下元素来定位某个jar:
-Group ID:公司名称。公司域名倒着写。
Artifact ID:项目名
Version:版本
发布的项目有一个固定的版本标志来指向项目的特定版本。在版本管理中,maven可以使用几个特殊的字符串SNAPSHOT,LATEST ,RELEASE。比如"1.0-SNAPSHOT"。
各部分的含义和处理逻辑如下:
SNAPSHOT 正在开发的项目可以使用一个特殊的标志,在版本中添加一个标志"SNAPSHOT"的标记。
LATEST 指特定部件的最新发布,可以是发布版,也可以是snapshot版,具体看什么时候结束。
RELEASE 指最后一个发布版。
标签将另一个项目的jar引入当前项目
自动下载另一个项目所依赖的其他项目
父项目为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开发的道路上越走越远!