【学习笔记】项目管理构建工具-Maven

举报
ChillRay 发表于 2020/12/29 23:03:50 2020/12/29
【摘要】 内容参考自runoob(https://www.runoob.com/maven/) 简介 Maven是Apache下纯java开发的开源项目,可以用于对java项目的构建和依赖管理 Maven利用中央信息片段管理项目的构建、报告和文档。 maven具有的功能: 构建 文档生成 报告 依赖 SCMs 发布 分发 邮件列表 maven遵循约定优先于...

内容参考自runoob(https://www.runoob.com/maven/)

简介

Maven是Apache下纯java开发的开源项目,可以用于对java项目的构建和依赖管理
Maven利用中央信息片段管理项目的构建、报告和文档。

maven具有的功能:
构建
文档生成
报告
依赖
SCMs
发布
分发
邮件列表

maven遵循约定优先于配置的原则,所以尽可能应当遵循一定的目录结构
~/.m2/repository - maven本地仓库的默认地址

POM

POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。

POM中可以指定如下的信息:
项目依赖
插件
执行目标
项目构建 profile
项目版本
项目开发者列表
相关邮件列表信息

所有 POM 文件都需要 project 元素和三个必需字段:groupId,artifactId,version。
这三个东西又可以称之为maven坐标。
具体命名规范如下:
groupId 这是工程组的标识。它在一个组织或者项目中通常是唯一的。例如,一个银行组织 com.companyname.project-group 拥有所有的和银行相关的项目。
artifactId 这是工程的标识。它通常是工程的名称。例如,消费者银行。groupId 和 artifactId 一起定义了 artifact 在仓库中的位置。
version 这是工程的版本号。在 artifact 的仓库中,它用来区分不同的版本。例如:
com.company.bank:consumer-banking:1.0
com.company.bank:consumer-banking:1.1

超级POM

Super POM是Maven默认的POM,所有的POM无论是否显式定义,都是继承自一个默认的POM。
Maven使用的是effective pom(Super POM + native POM)来执行相关的目标,帮助开发者在pom.xml中尽可能少的进行配置。
如何查看super pom的默认配置?mvn help:effective-pom

POM标签大全

生命周期

Maven标准的生命周期:
Clean : 清理
Build: 构建
Site: 项目占点文档的创建
每个生命周期中还包含着一系列的阶段(phase),这些阶段相当于maven的统一接口,有maven插件来完成。

Maven Build构建的生命周期:
验证validate -> 编译compile -> 测试test -> 打包package -> 检查verify -> 安装install -> 部署deploy
构建生命周期实际上包含了23个阶段。是maven的主要生命周期,被用于应用的构建。

Maven Clean清理生命周期:
Pre-clean: 清理前
Clean: 移除上一次构建生成的文件
post-clean: 清理之后需要做的事情

执行mvn clean,会运行pre-clean和clean,执行mvn post-clean,会执行pre-clean, clean 和 post-clean。

开发环境中,自己编写了maven的某个发布版本,可以通过:
mvn install
去进行发布到本地仓库的操作

而构建发布环境中,可以使用如下的方式纯净的构建和部署项目到共享目录中 :
mvn clean deploy

使用maven-antrun-plugin:run 插件,可以针对不同的环境配置不同的profile到pom.xml中,并在控制台中通过maven命令来激活profile。
配置文件将会采用节点在pom.xml中生效。
id节点代表不同的AntRun任务,通过用户输入参数可以选择执行不同的
通过在maven根目录下的setting.xml内设置,也可以直接设置配置文件的激活。
这时候只需要通过mvn test就可以直接运行节点下定义的配置文件的对应的额AntRun的任务了。
也可以直接通过环境变量进行设置,这时候在pom.xml的节点下增加节点,mvn命令时通过-D传入参数即可
也可通过操作系统来传入不同的环境变量,也是在节点下进行配置。

IDEA已经默认集成并整合了Maven
所有的plugin都需要添加到build / plugins标签下
所有的依赖都需要添加到dependencies/dependency标签下

Maven仓库:

项目依赖的第三方库,这个库所在的位置就是仓库。
maven中任何一个依赖、插件或者项目构建的输出,就可以称之为构件。
三种仓库类型: local, central, remote
local:
本地目录,可以在:%M2_HOME%\conf 目录中的 Maven 的 settings.xml 文件中定义另一个路径
maven会将所有需要的依赖都下载到这个目录中。

central:
中央仓库由maven社区管理
默认的maven中央仓库搜索地址是:http://search.maven.org

remote:
远端仓库又可以分为三类:中央仓库,私服,其他公共仓库
所有的maven项目都会继承自超级pom,超级pom中配置了中心仓库的地址。
可以自定义一些远程仓库的地址

maven依赖拉去的顺序(优先级):
本地仓库->全局私服->项目自身私服->中央仓库

maven插件:

比如mvn clean命令,就是对应着Clean生命周期的clean阶段,而具体的操作是由maven-clean-plugin来实现的

Maven实际上是一个依赖插件执行的框架,每个任务都是由插件来完成的

Maven构件Java项目:
Maven使用原型archetype插件来创建项目。
Maven的构建与测试:
通过 mvn clean package就可以在target/目录下生成构建的文件和测试报告

可以看到刚才我们建立新的项目就是从项目模板开始创建的。Maven支持多种项目模型,大家可以根据需要自由的选择。

SNAPSHOT vs 版本

  • 快照可以是即时发布的,快速迭代的,开发团队可以随时将快照推送到远程仓库,这样其他依赖于此快照开发的开发团队可以在每次部署时都在中心仓库获取到最新的快照版本,快速迭代的过程中尽早察觉到因其他团队修改而带来的影响。
  • 版本应该是稳定的,供外部系统使用的稳定版本,应当是按照计划发布的。

自动化构建:

比如fe和be都依赖一个core的应用,那么应当每次在core构建发布新的快照版本的时候,fe和be都重新拉取最新的core依赖并完成自己的构建。这样可以保证fe和be的稳定。
可以通过两种方式实现以上的目标:
1. 在core项目的pom文件中添加post-build目标操作,启动fe和be项目的构建
2. 在持续集成(CI)服务器上,自行管理构建自动化

方法1可以通过:maven-invoker-plugin插件来实现

Maven依赖管理:

可传递依赖配置发现级别和方式:
设置依赖范围:
依赖管理:

Maven自动化部署:

项目自动化部署通常包含一下步骤:
代码修改->提交到版本管理库->从版本管理库下载最新代码->构建应用->将输出的jar或war包放到一个常用的网络位置下->从网络上获取文件并部署到生产站点上->更新文档并更新应用版本好

可以使用Maven发布插件来创建一个自动化发布过程。利用maven-release-plugin发布目标文件到nexus中。

文章来源: zclhit.blog.csdn.net,作者:zclhit_,版权归原作者所有,如需转载,请联系作者。

原文链接:zclhit.blog.csdn.net/article/details/104392593

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。