Maven – 概述
什么是Maven?
Maven是一个项目管理和理解工具,为开发人员提供完整的构建生命周期框架。 由于Maven使用标准目录布局和默认构建生命周期,开发团队几乎可以立即自动化项目的构建基础架构。
在多个开发团队环境的情况下,Maven可以在很短的时间内按照标准设置工作方式。 由于大多数项目设置都很简单且可重复使用,因此Maven可以在创建报告,检查,构建和测试自动化设置的同时简化开发人员的工作。
Maven为开发人员提供了管理以下方法的方法 –
- Builds
- Documentation
- Reporting
- Dependencies
- SCMs
- Releases
- Distribution
- 邮件列表
总而言之,Maven简化并标准化了项目构建过程。 它无缝地处理编译,分发,文档,团队协作和其他任务。 Maven提高了可重用性并处理了大多数与构建相关的任务。
Maven Evolution
Maven最初旨在简化Jakarta Turbine项目的建设流程。 有几个项目,每个项目包含略有不同的ANT构建文件。 JAR被检入CVS。
Apache团队随后开发了Maven ,它可以一起构建多个项目,发布项目信息,部署项目,在多个项目中共享JAR并帮助团队协作。
目标(Objective)
Maven的主要目标是为开发人员提供以下内容 –
- 项目的综合模型,可重用,可维护,易于理解。
- 与此声明性模型交互的插件或工具。
Maven项目结构和内容在xml文件pom.xml中声明,称为项目对象模型(POM),它是整个Maven系统的基本单元。 在后面的章节中,我们将详细解释POM。
约定优于配置
Maven使用Convention优于Configuration ,这意味着开发人员不需要自己创建构建过程。
开发人员不必提及每个配置细节。 Maven为项目提供合理的默认行为。 创建Maven项目时,Maven会创建默认项目结构。 开发人员只需要相应地放置文件,他/她不需要在pom.xml中定义任何配置。
例如,下表显示了项目源代码文件,资源文件和其他配置的默认值。 假设, ${basedir}表示项目位置 –
项目 | 默认 |
---|---|
源代码 | ${basedir}/src/main/java |
Resources | ${basedir}/src/main/resources |
Tests | ${basedir}/src/test |
符合字节代码 | ${basedir}/target |
可分发的JAR | ${basedir}/target/classes |
为了构建项目,Maven为开发人员提供了提及生命周期目标和项目依赖性的选项(依赖于Maven插件功能及其默认约定)。 许多项目管理和构建相关任务都由Maven插件维护。
开发人员可以构建任何给定的Maven项目,而无需了解各个插件的工作方式。 我们将在后面的章节中详细讨论Maven插件。
Maven的特点
- 简单的项目设置遵循最佳实践。
- 所有项目的一致使用。
- 依赖管理包括自动更新。
- 一个庞大且不断增长的库库。
- 可扩展,能够轻松编写Java或脚本语言的插件。
- 只需很少或不需要额外配置即可即时访问新功能。
- Model-based builds – Maven能够将任意数量的项目构建到预定义的输出类型中,例如jar,war,metadata。
- Coherent site of project information – 使用与构建过程相同的元数据,maven能够生成包含完整文档的网站和PDF。
- Release management and distribution publication – 如果没有其他配置,maven将与您的源控制系统(如CVS)集成并管理项目的发布。
- Backward Compatibility – 您可以从旧版本的Maven轻松地将项目的多个模块移植到Maven 3中。 它也可以支持旧版本。
- Automatic parent versioning – 无需在子模块中指定父级进行维护。
- Parallel builds – 它分析项目依赖关系图,使您能够并行构建计划模块。 使用此功能,您可以实现20-50%的性能提升。
- Better Error and Integrity Reporting – Maven改进了错误报告,它为您提供了Maven wiki页面的链接,您可以在其中获得错误的完整描述。
最新评论
徒弟可以A师傅,学生可以A老师,为什么外包不能A正式,我觉得很正常。异性相吸这是宇宙真理
PHP天下第一(狗头叼花)
第一个不需要关注公主号直接给激活码的帖子!
客户端超时断开后,服务端如果没有设置超时机制,那也会继续等待处理,万一这期间有消息到了,那不是就接受到消息处理了,但是也没有办法返回到客户端,导致消息丢失。
企业级GO项目开发实战 Kubernetes权威指南 第六版
https://pan.baidu.com/s/1q3bnTncIACKoTZFxvx7BQw?pwd=ii7n
RabbitMQ精讲,项目驱动落地,分布式事务拔高 有吗?
Spring Cloud Alibaba 微服务架构实战 https://pan.baidu.com/s/1jF5voFRoeF0lYAzAPBWSbw?pwd=chqk