基于Java项目的构建和管理的工具–Maven

从公众号的后端增长路径来看,

授权人

什么是马文?

Maven,这个词是犹太血统,意味着知识的积累。最初用于雅加达汽轮机项目,以简化建设项目流程。最终,形成了一个用于构建和管理基于 Java 的项目的工具。

安装和配置

安装比较简单,官网下载,配置环境即可。这里建议安装后配置仓库镜像,可以加快访问速度。

编辑settings.xml,在前面添加

使用其他工具创建项目也是如此。

Maven项目结构

Maven基本概念POM(项目对象模型)

POM的全称是Project Object Model。通俗的讲,就是对要建的项目进行建模,把要建的项目当成一个对象来对待。

我们可以用我们熟悉的 Java 代码来描述这个对象。

生命周期

在 Maven 中什么是程序包,构建过程是一个生命周期。这个生命周期分为多个阶段,每个阶段称为阶段。共有三个构建生命周期,默认、干净和站点。default 用于部署项目,clean 用于清理项目,site 用于创建项目文档。

defaultLifecycle 包含以下阶段:

常用maven命令介绍

清理项目生成的临时文件,通常是模块下的目标目录

mvn clean

项目打包工具会在模块下的target目录下生成jar或者war文件

mvn package

测试命令或执行src/test/java下的测试用例

mvn test

模块安装命令什么是程序包,将打包好的jar或者war文件复制到本地仓库,使用-Dmaven.test.skip=true跳过测试

mvn install

发布命令将打包文件发布到maven仓库

mvn deploy

同时使用maven多个命令

mvn clean package-U -Dmaven.test.skip=true-P test

阶段和目标

Lifecycle 只规定了项目构建的过程,即先执行 validate 和 compile 等一系列阶段,但并没有定义每个阶段做什么。Phase这里的作用类似于Java中的接口,Phase的具体实现在Goals中。

一个阶段必须绑定到一个或多个目标才能执行特定的构建过程。为了让用户无需任何配置就可以使用Maven项目,Maven默认为核心生命周期的某些阶段绑定Goals。

如果需要自定义绑定,可以在 pom.xml 文件中配置它们。

Maven 核心概念 Maven 坐标

Maven坐标主要用于标识项目的唯一性。它由以下属性组成:

Maven 仓库

存储管理工件(JAR、WAR 等)的地方。

一般分为以下三类:

Maven 依赖项

在 pom.xml 中配置项目依赖,如


  junit
junit
4.12
test

Scope 用于控制依赖关系和编译、测试和运行类路径之间的关系。存在三种关系:

传递依赖

Maven 通过传递依赖来解析 JAR 包依赖。比如我的项目中引入了junit,在解析我的项目时,不仅是junit,还有junit所依赖的JAR包。

包冲突是如何产生的?

假设 A->B->C->D1, E->F->D2, D1、D2 分别是 D 的不同版本。

如果在pom.xml文件中引入了A和E,根据Maven传递依赖原则,项目中实际需要引入的JAR包为:ABC D1和EF D2,所以D1、D2会造成包冲突。

如何解决包冲突?

Maven 解析 pom.xml 时,只保留一个相同的 JAR 包。

对于包冲突,Maven 处理策略:

如何删除依赖项?

Maven继承

继承消除重复。可以提取很多相同的配置。

子模块通过父标签配置并继承父模块的属性。父模块通过dependencyManagement 标签进行管理。

多模块版本号可以通过maven命令进行操作,在项目根目录下执行

设置新版本号

mvn versions:set-DnewVersion=0.0.2-SNAPSHOT

回滚设置新版本号操作

 mvn versions:revert

提交设置新版本号操作

 mvn versions:commit

Maven多模块项目结构,以及Maven属性继承配置等,可​​以参考这个项目

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论