Maven基础

一、Maven仓库

1.1 三种类型Maven仓库

本地(local)
  本地仓库是机器上的一个文件夹,它在你第一次运行任何 maven 命令的时候创建,当你运行一次 Maven 构建,Maven 会自动下载所有依赖的 jar 文件到本地仓库中。它避免了每次构建时都引用存放在远程机器上的依赖文件。

  Maven 本地仓库默认被创建在 %USER_HOME% 目录下。要修改默认位置,在 %M2_HOME%\conf 目录中的 Maven 的 settings.xml 文件中定义另一个路径。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
   http://maven.apache.org/xsd/settings-1.0.0.xsd">
      <localRepository>C:/MyLocalRepository</localRepository>
</settings>

中央(central)
  中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。

  • 这个仓库由 Maven 社区管理。
  • 不需要配置。
  • 需要通过网络才能访问。

要浏览中央仓库的内容,maven 社区提供了一个 URL:Http://search.maven.org/#browse。使用这个仓库,开发人员可以搜索所有可以获取的代码库。

远程(remote)
如果 Maven 在中央仓库中也找不到依赖的库文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件。

1.2 Maven依赖搜索顺序

当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:

  1. 步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
  2. 步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中已被将来引用。
  3. 步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
  4. 步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库已被将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。

1.3 外部依赖

  当然,如果在远程仓库和中央仓库中,依然无法找到依赖,也可以通过外部依赖解决,即在你自己的本地工程中添加 lib 文件夹,复制任何 jar 文件到 lib 文件夹下,将这个外部依赖添加到对应的pom.xml 中,添加依赖时使用<systemPath>指定路径。

<dependencies>
   <dependency>
      <groupId>ldapjdk</groupId>
      <artifactId>ldapjdk</artifactId>
      <scope>system</scope>
      <version>1.0</version>
      <systemPath>${basedir}\src\lib\ldapjdk.jar</systemPath>
   </dependency>
</dependencies>
  • 外部依赖(library jar location)能够像其他依赖一样在 pom.xml 中配置。
  • 指定 groupId 为 library 的名称。
  • 指定 artifactId 为 library 的名称。
  • 指定作用域(scope)为system。
  • 指定相对于工程位置的系统路径。

二、Maven的构建过程

Maven的构建步骤:

  1. 解析POM文件:Maven会读取项目根目录下的pom.xml文件,并解析其中的配置信息,包括依赖库、插件、构建配置等。

  2. 下载依赖库:Maven会根据pom.xml文件中声明的依赖库信息,从Maven仓库或其他远程仓库中下载依赖库,并存储到本地仓库中。如果本地仓库中已经存在相应的依赖库,则不会再次下载。

  3. 执行构建插件:Maven会根据pom.xml文件中声明的构建插件,执行相应的构建任务,例如编译Java代码、运行测试、打包等。

  4. 打包:Maven会根据pom.xml文件中声明的打包方式,将构建结果打包成相应的格式,例如JAR、WAR等。

  5. 安装到本地仓库:Maven会将打包结果安装到本地仓库中,以便其他项目可以引用。

  6. 部署到远程仓库:如果需要将构建结果部署到远程仓库中,Maven会根据pom.xml文件中声明的仓库信息,将构建结果上传到远程仓库中。

  Maven的构建原理是基于POM文件和插件机制。在执行构建过程中,Maven会根据pom.xml文件中声明的插件,执行相应的构建任务。通过插件机制,Maven可以支持各种不同的构建任务,例如编译Java代码、运行测试、打包等。Maven提供了一些常用的构建插件,例如Maven Compiler Plugin、Maven Surefire Plugin等,同时也支持自定义插件。

  Maven的构建过程是基于Java虚拟机的。Maven本身是用Java语言编写的,因此在运行Maven时需要先启动Java虚拟机。在执行构建过程中,Maven会调用Java编译器、JUnit测试框架等Java工具和库。

  但Maven不仅仅对Java虚拟机打包工程的一种包装,它是一个基于项目对象模型(Project Object Model,POM)的构建工具,可以管理项目的依赖、构建、测试、打包等各个方面,其功能在于:

  1. 依赖管理:Maven可以自动下载和管理项目所依赖的库文件,避免手动下载和管理依赖库的麻烦。

  2. 构建管理:Maven可以自动执行项目的构建过程,包括编译、测试、打包等,避免手动执行构建过程的繁琐。

  3. 插件管理:Maven提供了丰富的插件,可以扩展和定制项目的构建过程,例如执行代码质量检查、生成文档等。

  4. 多模块管理:Maven可以管理多个模块的依赖关系,方便管理大型项目。

  5. 统一构建:Maven可以统一管理项目的构建过程,使得不同项目的构建过程更加一致和规范。

posted @ 2023-07-27 20:09  staticFinal  阅读(26)  评论(0)    收藏  举报