page contents

java maven教程——Maven 的核心概念

本文讲述了Java maven教程——Maven 的核心概念!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

attachments-2023-07-QXfou4xy64a76e357090d.jpg本文讲述了Java maven教程——Maven 的核心概念!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

Maven的意思是“专家,知识的积累着”,来自Yiddish语言,meyvn单词,意为“知识的积累者”

Maven是一个项目管理工具,基于项目对象模型(POM)管理项目,就是用XML描述一个项目的信息(主要是项目依赖jar,插件,仓库等等)

同类型工具还有Ant,Gradle,目前Maven用的更普遍一些,同等工具还有nodejs下的npm等等

Maven最大的好处是,基于“约定大于配置”思想,在全世界做好了Java项目开发的规范,使得开发人员可以在多个项目间平滑迁移。

Apache的开源工具,开源免费

官网:https://maven.apache.org/

源码:https://github.com/apache/maven

下载安装

下载地址 https://maven.apache.org/download.cgi

attachments-2023-07-6xJZ9Eff64a76dd92787a.jpg

运行

运行Maven的语法如下:mvn [选项] [<目标>] [<阶段>]

获取帮助命令 mvn -h

约定配置

一个Maven项目目录如下,约定如此:


-- 项目目录

----src 资源目录,存放项目代码

------main 代码主目录,存放项目主体代码

--------java 存放java代码

--------resource 存放资源代码

------test  测试目录,存放测试相关代码

--------java 存放java代码

--------resource 存放资源代码

-----target 打包输出目录,存放项目打包后输出的jar或war包

-------classes 编译输出目录

-------test-classes 测试代码编译输出目录

--pom.xml 项目对象模型描述文件,是一个xml文件

一个项目的开发流程约定如下:


Maven提供一个中心仓库,大家把自己写好的代码打包成jar发布到中心仓库,用一段pom片段描述项目信息,别人使用该项目的时候,引入该pom片段,Maven自动把相关jar依赖下载并配置到项目开发环境中,如果多个jar之间有相互依赖或继承等关系,Maven会自动处理好。


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


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

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

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

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

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>

Maven生命周期

attachments-2023-07-Be4kmtyU64a76dba2f4b5.jpg

验证 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(部署) 将最终的项目包复制到远程仓库中与其他开发者和项目共享。

说明:

有一些与 Maven 生命周期相关的重要概念需要说明:


当一个阶段通过 Maven 命令调用时,例如 mvn compile,只有该阶段之前以及包括该阶段在内的所有阶段会被执行。


不同的 maven 目标将根据打包的类型(JAR / WAR / EAR),被绑定到不同的 Maven 生命周期阶段。


Site 生命周期

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


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

site:生成项目的站点文档

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

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

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


常用的命令

# 清理

mvn clean 

# 编译

>mvn compile

# 安装

mvn install

# 先清理再部署

mvn clean deploy

# 生成站点文档

mvn site

IDEA中使用Maven

idea自带了maven,使用非常方便,都是图形界面化操作,在项目的右侧导航栏,对应的生命周期之间双击鼠标即可

attachments-2023-07-ebSN1vZ264a76d99859aa.jpg

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

想高效系统的学习Java编程语言,推荐大家关注一个微信公众号:Java圈子。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Java入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2023-03-2AoKIjPQ64014b4ad30a3.jpg

  • 发表于 2023-07-07 09:45
  • 阅读 ( 169 )
  • 分类:Java开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
王昭君
王昭君

209 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1474 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章