什么是Maven?
Maven是一个基于POM(项目对象模型)的强大项目管理工具。它用于项目构建、依赖关系和文档编制。它像ANT一样简化了构建过程。但它比蚂蚁先进得多。 简而言之,我们可以看出maven是一个可以用于构建和管理任何基于Java的项目的工具。maven简化了Java开发人员的日常工作,通常有助于理解任何基于Java的项目。
maven做什么?
Maven做了很多有用的工作,比如
- 我们可以使用maven轻松构建一个项目。
- 在maven的帮助下,我们可以轻松地添加JAR和项目的其他依赖项。
- Maven提供项目信息(日志文档、依赖项列表、单元测试报告等)
- Maven在更新JAR和其他依赖项的中央存储库时对项目非常有用。
- 在Maven的帮助下,我们可以将任意数量的项目构建成输出类型,比如JAR、WAR等,而无需编写任何脚本。
- 使用maven,我们可以轻松地将我们的项目与源代码控制系统(如Subversion或Git)集成。
maven是怎么工作的?
Maven的核心概念:
- POM文件: 项目对象模型(POM)文件是XML文件,其中包含与项目相关的信息和配置信息,如Maven用于构建项目的依赖项、源目录、插件、目标等。当您应该执行maven命令时,您会给maven一个POM文件来执行这些命令。Maven读pom。xml文件来完成其配置和操作。
- 依赖项和存储库: 依赖项是项目所需的外部Java库,存储库是打包JAR文件的目录。本地存储库只是计算机硬盘上的一个目录。如果在本地Maven存储库中找不到依赖项,Maven会从中央Maven存储库下载它们,并将它们放入本地存储库中。
- 构建生命周期、阶段和目标: 构建生命周期由一系列构建阶段组成,每个构建阶段由一系列目标组成。Maven命令是构建生命周期、阶段或目标的名称。如果通过给出maven命令请求执行生命周期,那么该生命周期中的所有构建阶段也会执行。如果一个构建阶段被请求执行,那么在定义的序列中它之前的所有构建阶段也将被执行。
- 构建配置文件: 构建配置文件一组配置值,允许您使用不同的配置构建项目。例如,您可能需要为本地计算机构建项目,以便进行开发和测试。要启用不同的构建,可以使用profiles元素将不同的构建概要文件添加到POM文件中,并以多种方式触发。
- 构建插件: 构建插件用于执行特定的目标。可以向POM文件中添加插件。Maven有一些可以使用的标准插件,您也可以用Java实现自己的插件。
Maven的安装过程
Maven的安装包括以下步骤:
- 验证您的系统是否安装了java。如果没有,那么安装java( Java安装的链接 )
- 检查是否设置了java环境变量。如果没有,则设置java环境变量。(链接至 安装java并设置环境变量 )
- 下载maven( 链接 )
- 在系统中的任何地方打开maven拉链。
- 将创建的目录apache-maven-3.5.3(取决于安装版本)的bin目录添加到PATH环境变量和系统变量中。
- 打开cmd并运行 mvn-v 命令如果它打印以下代码行,则安装完成。
Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-25T01:19:05+05:30) Maven home: C:apache-maven-3.5.3in.. Java version: 1.8.0_151, vendor: Oracle Corporation Java home: C:Program FilesJavajdk1.8.0_151jre Default locale: en_US, platform encoding: Cp1252 OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
马文·波姆。xml文件
POM意味着项目对象模型是操作Maven的关键。Maven读pom。xml文件来完成其配置和操作。它是一个XML文件,包含与项目相关的信息和配置信息,例如 依赖关系 , 源目录 , 插件 , 目标等 .由Maven用于构建项目。
聚甲醛样品。xml
xsi:schemaLocation=" http://maven.apache.org/POM/4.0.0 < modelVersion >4.0.0</ modelVersion > < groupId > com.project.loggerapi </ groupId > < artifactId >LoggerApi</ artifactId > < version >0.0.1-SNAPSHOT</ version > <!-- Add typical dependencies for a web application --> < dependencies > < dependency > < groupId >org.apache.logging.log4j</ groupId > < artifactId >log4j-api</ artifactId > < version >2.11.0</ version > </ dependency > </ dependencies > </ project > |
用于创建pom的元素。xml文件
- 计划- 它是pom的根元素。xml文件。
- 模型版本- modelversion指您正在使用的POM模型的版本。对maven 2和maven 3使用4.0.0版。
- groupId- groupId指项目组的id。它是唯一的,而且最常见的情况是使用一个组ID,它类似于项目的根Java包名称,就像我们使用的groupId com一样。项目洛格拉皮。
- 人工的- artifactId用于给出您正在构建的项目的名称。在我们的示例中,我们项目的名称是LoggerApi。
- 版本- version元素包含项目的版本号。如果你的项目发布了不同的版本,那么给出项目的版本是很有用的。
Pom的其他元素。xml文件
- 依赖关系- 依赖项元素用于定义项目的依赖项列表。
- 依赖关系- dependency定义一个dependency,并在dependencies标记中使用。每个依赖项都由其groupId、artifactId和版本描述。
- 名字- 这个元素用来命名我们的maven项目。
- 范围- 该元素用于定义这个maven项目的范围,可以是编译、运行时、测试、系统提供等。
- 包装- 打包元素用于将我们的项目打包为输出类型,如JAR、WAR等。
Maven存储库
Maven存储库是包含一些元数据的打包JAR文件的目录。元数据是与每个打包JAR文件所属的项目相关的POM文件,包括每个打包JAR具有哪些外部依赖关系。此元数据使Maven能够递归地下载依赖项的依赖项,直到所有依赖项都被下载并放入本地机器。
Maven有三种类型的存储库:
- 本地存储库
- 中央存储库
- 远程存储库
Maven在此存储库中搜索依赖项。如果POM中指定了远程存储库,maven首先在本地存储库中搜索,然后在中央存储库中搜索,然后在远程存储库中搜索。
- 本地存储库- 本地存储库是开发者机器上的一个目录。该存储库包含Maven下载的所有依赖项。Maven只需要下载依赖项一次,即使多个项目依赖它们(例如ODBC)。 默认情况下,maven local repository是user_home/m2目录。 例如—— C:Usersasingh。m2
- 中央存储库- 中央Maven存储库由Maven社区创建。Maven会在这个中央存储库中查找任何需要但在本地存储库中找不到的依赖项。Maven然后将这些依赖项下载到本地存储库中。您可以通过以下方式查看中央存储库: 这个链接 .
- 远程存储库- 远程存储库是web服务器上的存储库,Maven可以从中下载依赖项。它通常用于托管组织内部的项目。Maven然后将这些依赖项下载到本地存储库中。
- Maven可以通过读取pom文件自动添加项目所需的所有依赖项。
- 使用Maven可以根据需求轻松地将项目构建为jar、war等。
- Maven可以在不同的环境中轻松启动项目,而不需要处理依赖项注入、构建、处理等。
- 添加新的依赖项非常容易。只需在pom文件中编写依赖代码。
- Maven需要在系统中安装Maven才能工作,而在ide中需要安装Maven插件。
- 如果现有依赖项的maven代码不可用,则不能使用maven添加该依赖项。
- 当项目有很多依赖项时。然后,使用maven很容易处理这些依赖关系。
- 当依赖项版本频繁更新时。然后只需更新pom文件中的版本ID即可更新依赖项。
- 使用maven可以轻松处理连续构建、集成和测试。
- 当需要一种从源代码生成文档、编译源代码、将编译后的代码打包成JAR文件或ZIP文件的简单方法时。
Maven的实际应用
当处理一个java项目时,该项目包含很多依赖项、构建和需求,那么手动处理所有这些事情是非常困难和烦人的。因此,使用一些能够完成这些工作的工具是非常有用的。 Maven就是这样一个 构建管理工具 它可以做所有的事情,比如添加依赖项,管理项目的类路径,自动生成war和jar文件,以及其他许多事情。
使用Maven的利弊
赞成的意见:
欺骗:
什么时候应该使用Maven?
可以在以下条件下使用Maven构建工具:
参考文献- ApacheMaven文档