Maven的基础认识+构建+四大特性

导读:本篇文章讲解 Maven的基础认识+构建+四大特性,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

在这里插入图片描述

Maven

一、 Maven 简介

​ 作为 Apache 组织中的一个颇为成功的开源项目, Maven 主要服务于基于 java 平台的项目构建, 依赖管理和项目信息管理。 无论是小型的开源类库项目, 还是大型的企业级应用; 无论是传统的瀑布式开发, 还是流行的敏捷开发, Maven 都能大显身手。

二、 项目构建

​ 总结一下, 我们会发现, 除了编写源代码, 我们每天有相当一部分时间花在了编译,运行单元测试, 生成文档, 打包和部署等繁琐且不起眼的工作上, 这就是构建。

三、 项目构建工具

Ant 构建

​ 最早的构建工具, 基于 IDE, 大概是 2000 年有的, 当时是最流行 java 构建工具,不过它的 XML 脚本编写格式让 XML 文件特别大。 对工程构建过程中的过程控制特别好。

Maven【 JAVA】

项目对象模型, 通过其描述信息来管理项目的构建, 报告和文档的软件项目管理工具。 它填补了 Ant 缺点, Maven 第一次支持了从网络上下载的功能, 仍然采用 xml 作为配置文件格式。 Maven 专注的是依赖管理, 使用 Java 编写。

Gradle

​ 属于结合以上两个的优点, 它继承了 Ant 的灵活和 Maven 的生命周期管理, 它最后被 google 作为了 Android 御用管理工具。 它最大的区别是不用 XML 作为配置文件格式, 采用了 DSL 格式, 使得脚本更加简洁。

目前市面上 Ant 比较老, 所以一般是一些比较传统的软件企业公司使用, Maven使用 Java 编写, 是当下大多数互联网公司会使用的一个构建工具, 中文文档也比较齐全,gradle 是用 groovy 编写, 目前比较新型的构建工具一些初创互联网公司会使用, 以后会有很大的使用空间.

四、 Maven 四大特性

依赖管理系统、 多模块构建、 一致的项目结构 、 一致的构建模型和插件机制。

I.依赖管理系统( jar 项目的多模块)

​ Maven 为 Java 世界引入了一个新的依赖管理系统 jar 包管理 jar 升级时修改配置文件即可。 在 Java 世界中, 可以用 groupId、 artifactId、 version 组成的Coordination( 坐标) 唯一标识一个依赖。 任何基于 Maven 构建的项目自身也必须定义这三项属性, 生成的包可以是 Jar 包, 也可以是 war 包或者 jar 包。 一个典型的依赖引用
如下所示:

<dependency>
	<groupId>javax.servlet</groupId> //包名/项目名
	<artifactId>javax.servlet-api</artifactId> //某一模块名
	<version>3.1.0</version>	//所需要jar的版本
</dependency>

注意:

​ 1)坐标属性的理解: Maven 坐标为各种组件引入了秩序, 任何一个组件都必须明确定义自己的坐标。

​ 2)groupId: 定义当前 Maven 项目隶属的实际项目-公司名称

​ 3)artifactId(工程名): 该元素定义实际项目中的一个 Maven 模块-项目名

​ 4)version: 该元素定义 Maven 项目当前所处的版本。

II. 多模块构建

​ 项目复查时 dao service controller 层分离将一个项目分解为多个模块已经是很通用的一种方式。在 Maven 中需要定义一个 parent POM 作为一组 module 的聚合 POM。在该 POM 中可以使用 标签来定义一组子模块。 parent POM 不会有什么实际构建产出。 而 parent POM 中的 build 配置以及依赖配置都会自动继承给子 module。

III. 一致的项目结构( 不同的 IDE 项目结构是一致)

​ Ant 时代大家创建 Java 项目目录时比较随意, 然后通过 Ant 配置指定哪些属于source,那些属于 testSource 等。而 Maven 在设计之初的理念就是 Conversion overconfiguration( 约定大于配置)。 其制定了一套项目目录结构作为标准的 Java 项目结构,解决不同 ide 带来的文件目录不一致问题。

IV. 一致的构建模型和插件机制( 通过 pom 配置 tomcat、 jetty 插件)
<plugin>
	<!--这里是所有添加插件配置的地方-->
	<groupId>org.mortbay.jetty</groupId>
	<artifactId>maven-jetty-plugin</artifactId>
	<version>6.1.25</version>
	<configuration>
	<scanIntervalSeconds>10</scanIntervalSeconds>
	<contextPath>/test</contextPath>
</configuration>
</plugin>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/106315.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!