📜  Apache Maven 简介 |用于Java项目的构建自动化工具

📅  最后修改于: 2021-10-21 05:50:23             🧑  作者: Mango

什么是Maven?

Maven 是一个强大的项目管理工具,它基于 POM(项目对象模型)。它用于项目构建、依赖和文档。它像 ANT 一样简化了构建过程。但是它比ANT先进太多了。
简而言之,我们可以说 maven 是一个可用于构建和管理任何基于 Java 的项目的工具。 maven 使Java开发人员的日常工作更轻松,并且通常有助于理解任何基于 Java 的项目。

maven 是做什么的?

Maven 做了很多有用的任务,比如

  1. 我们可以使用 maven 轻松构建项目。
  2. 我们可以使用 maven 的帮助轻松添加项目的 jar 和其他依赖项。
  3. Maven 提供项目信息(日志文档、依赖列表、单元测试报告等)
  4. Maven 在更新 JAR 和其他依赖项的中央存储库时对项目非常有帮助。
  5. 在 Maven 的帮助下,我们可以将任意数量的项目构建为 JAR、WAR 等输出类型,而无需编写任何脚本。
  6. 使用 maven,我们可以轻松地将我们的项目与源代码控制系统(例如 Subversion 或 Git)集成。

Maven 是如何工作的?


Maven的核心概念:

  1. POM 文件:项目对象模型(POM)文件是 XML 文件,包含与项目相关的信息和配置信息,如 Maven 用于构建项目的依赖项、源目录、插件、目标等。当你应该执行一个 maven 命令时,你给 maven 一个 POM 文件来执行命令。 Maven 读取 pom.xml 文件来完成它的配置和操作。
  2. 依赖项和存储库:依赖项是项目所需的外部Java库,存储库是打包 JAR 文件的目录。本地存储库只是您机器硬盘上的一个目录。如果在本地 Maven 存储库中找不到依赖项,Maven 将从中央 Maven 存储库下载它们并将它们放在您的本地存储库中。
  3. 构建生命周期、阶段和目标:构建生命周期由一系列构建阶段组成,每个构建阶段由一系列目标组成。 Maven 命令是构建生命周期、阶段或目标的名称。如果通过给出 maven 命令请求执行生命周期,则该生命周期中的所有构建阶段也将被执行。如果请求执行构建阶段,则也执行定义序列中在它之前的所有构建阶段。
  4. 构建配置文件:构建配置文件是一组配置值,允许您使用不同的配置构建项目。例如,您可能需要为本地计算机构建项目,以进行开发和测试。要启用不同的构建,您可以使用配置文件元素将不同的构建配置文件添加到 POM 文件中,并以多种方式触发。
  5. 构建插件:构建插件用于执行特定目标。您可以在 POM 文件中添加一个插件。 Maven 有一些您可以使用的标准插件,您也可以在Java实现自己的插件。

Maven的安装过程

Maven的安装包括以下步骤:

  1. 验证您的系统是否安装了Java 。如果没有,则安装Java ( Java安装链接)
  2. 检查Java环境变量是否设置。如果没有,则设置Java环境变量。(安装Java和设置环境变量的链接)
  3. 下载 maven(链接)
  4. 在系统中的任何位置解压 Maven zip。
  5. 将创建的目录apache-maven-3.5.3(取决于你的安装版本)的bin目录添加到PATH环境变量和系统变量中。
  6. 打开 cmd 并运行mvn -v命令。如果它打印以下代码行,则安装完成。
    Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-25T01:19:05+05:30)
    Maven home: C:\apache-maven-3.5.3\bin\..
    Java version: 1.8.0_151, vendor: Oracle Corporation
    Java home: C:\Program Files\Java\jdk1.8.0_151\jre
    Default locale: en_US, platform encoding: Cp1252
    OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
    
    

Maven pom.xml 文件

POM 意味着 Project Object Model 是操作 Maven 的关键。 Maven 读取 pom.xml 文件来完成它的配置和操作。它是一个 XML 文件,其中包含与项目相关的信息和配置信息,例如依赖项源目录插件目标等。 Maven 使用它来构建项目。

pom.xml 示例


          
         4.0.0
          com.project.loggerapi 
         LoggerApi
         0.0.1-SNAPSHOT
           
       
       
               
                       org.apache.logging.log4j
                       log4j-api
                       2.11.0
                 
       
     
   

用于创建 pom.xml 文件的元素

  1. project-它是 pom.xml 文件的根元素。
  2. modelVersion- modelversion 表示您使用的 POM 模型的版本。 maven 2 和 maven 3 使用版本 4.0.0。
  3. groupId-的groupId装置项目组的ID。它是唯一的,并且大多数情况下,您将使用类似于项目的根Java包名称的组 ID,就像我们使用 groupId com.project.loggerapi 一样。
  4. artifactId- artifactId 用于给出您正在构建的项目的名称。在我们的项目示例中,我们的项目名称是 LoggerApi。
  5. 版本-版本元素包含该项目的版本号。如果您的项目已经以不同的版本发布,那么提供您项目的版本会很有用。

Pom.xml 文件的其他元素

  1. dependencies- dependencies 元素用于定义项目的依赖项列表。
  2. dependency- dependency 定义了一个依赖项并在依赖项标签中使用。每个依赖项都由其 groupId、artifactId 和 version 描述。
  3. name –此元素用于为我们的 maven 项目命名。
  4. 范围 –此元素用于定义此 Maven 项目的范围,可以是编译、运行时、测试、提供的系统等。
  5. Packaging- Packaging 元素用于将我们的项目打包为 JAR、WAR 等输出类型。

Maven 存储库

Maven 存储库是包含一些元数据的打包 JAR 文件的目录。元数据是与每个打包的 JAR 文件所属的项目相关的 POM 文件,包括每个打包的 JAR 具有哪些外部依赖项。此元数据使 Maven 能够递归下载依赖项的依赖项,直到下载所有依赖项并将其放入本地计算机。

Maven 有三种类型的存储库:

  1. 本地存储库
  2. 中央存储库
  3. 远程仓库

Maven 在此存储库中搜索依赖项。如果在 POM 中指定了远程存储库,则 maven 首先在本地存储库中搜索,然后在中央存储库中搜索,然后在远程存储库中搜索。

  1. 本地存储库– 本地存储库是开发人员机器上的目录。此存储库包含 Maven 下载的所有依赖项。 Maven 只需要下载依赖项一次,即使多个项目依赖它们(例如 ODBC)。
    默认情况下,maven 本地存储库是 user_home/m2 目录。
    示例 – C:\Users\asingh\.m2
  2. 中央存储库– 中央 Maven 存储库是创建 Maven 社区。 Maven 在此中央存储库中查找所需但在本地存储库中找不到的任何依赖项。 Maven 然后将这些依赖项下载到您的本地存储库中。您可以通过此链接查看中央存储库。
  3. 远程存储库-远程存储库是 Web 服务器上的存储库,Maven 可以从中下载依赖项。它通常用于托管组织内部的项目。 Maven 然后将这些依赖项下载到您的本地存储库中。

      Maven的实际应用

      当处理一个Java项目并且该项目包含很多依赖项、构建、需求时,手动处理所有这些事情是非常困难和乏味的。因此,使用一些可以完成这些工作的工具是非常有帮助的。
      Maven 就是这样一个构建管理工具,它可以完成所有事情,例如添加依赖项、管理项目的类路径、自动生成 war 和 jar 文件以及许多其他事情。

      使用 Maven 的优缺点

      优点:

      1. Maven 可以通过读取 pom 文件自动添加项目所需的所有依赖项。
      2. 人们可以使用 Maven 根据他们的要求轻松地将他们的项目构建为 jar、war 等。
      3. Maven 使得在不同环境下启动项目变得容易,并且不需要处理依赖注入、构建、处理等。
      4. 添加新的依赖项非常容易。一个人只需要在 pom 文件中编写依赖代码。

      缺点:

      1. Maven 需要在系统中安装 maven 才能工作,并需要为 ide 安装 maven 插件。
      2. 如果现有依赖项的 maven 代码不可用,则无法使用 maven 添加该依赖项。

      什么时候应该使用 Maven?

      可以在以下条件下使用 Maven 构建工具:

      1. 当项目有很多依赖项时。然后使用 maven 很容易处理这些依赖项。
      2. 当依赖版本频繁更新时。然后只需更新 pom 文件中的版本 ID 即可更新依赖项。
      3. 使用 maven 可以轻松处理持续构建、集成和测试。
      4. 当需要一种从源代码生成文档、编译源代码、将编译后的代码打包成 JAR 文件或 ZIP 文件的简单方法时。

      参考 – Apache Maven 文档