
从公众号的后端增长路径来看,
授权人
什么是马文?
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属性继承配置等,可以参考这个项目
请登录后发表评论
注册
社交帐号登录