添加Maven依赖项时会发生什么?

use*_*609 8 java oop build-process build maven

当我向pom.xml文件添加依赖项并使用"mvn package"构建时,Maven采用该依赖项代码采取了哪些步骤?

它是否物理地从该依赖项的包中获取java代码并将其放入JAR中?为什么我需要添加依赖...为什么Maven不能只查看我的import语句和完全限定名称并找出我需要哪些依赖项?

Raz*_*zib 7

一般来说,pom.xml我们发现所有依赖都是这样的 -

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

这里groupId,artifactIdversion3个键,通过该罐被唯一地识别.这三种组合的工作方式类似于使用x,y和z坐标唯一地识别空间中的点的坐标系.

每当您发出mvn package命令时,都会maven尝试将依赖项指示的jar文件添加到构建路径中.为此,maven遵循以下步骤 -

  1. Maven在本地存储库中搜索(默认为〜/ .m2 linux).如果在此处找到依赖项/ jar,则将jar文件添加到构建路径.之后,它使用来自jar编译的必需类文件.

  2. 如果在〜/ .m2中找不到依赖关系,那么它将分别查找您的本地私有存储库(如果您已经配置了任何使用setting.xml文件)和maven中央远程存储库.如果您没有任何本地私有存储库,那么它将直接转到maven中央远程存储库.

  3. 只要在本地/远程存储库中找到jar,就会将其下载并保存在〜/ .m2中.

继续前进,当你再次发出mvn package命令时,它永远不会搜索任何存储库的依赖关系,因为它已经存在于你的存储库中~/.m2.