Maven的新手认识+构建+四大特性

    xiaoxiao2022-07-14  161

    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>
    最新回复(0)