可以自动帮我们做依赖管理,我们需要做的就是在POM文件里指定依赖

2022-11-24 21:03 栏目: 技术学堂 查看()

点击上方“天马营”,加入我们,快速成长~

【简介】 Maven可以自动帮我们进行依赖管理。我们只需要在POM文件中指定依赖JAR包的名称和版本号即可。Maven会自动下载并递归下载所有依赖。

项目依赖

Java最大的优势之一应该是整个生态系统中无数的框架和API。我们在创建实际项目时不可避免地需要使用这些框架和API,它们通常以JAR包的形式提供。我们之前编译项目的时候,需要把依赖的jar包存放在.jar包中。而这些外部的 JAR 包还会有其他的依赖。我们需要递归地将这些外部依赖一一下载下来,并确保下载的版本是正确的。当项目越来越复杂时,这就非常麻烦了maven如何只使用本地仓库,比如JAR Hell的问题。

Maven 现在是来拯救我们的。Maven 可以自动为我们管理依赖关系。我们只需要在POM文件中指定依赖JAR包的名称和版本号即可。Maven会自动下载并递归下载所有依赖。

通过 Maven 定义依赖

前面的例子是一个完全独立的项目,没有额外的包依赖,因为它太简单了。让我们把这个例子复杂一点。打印“Hello World!”时,我们同时打印了日期和时间。我们希望利用Joda提供的时间库帮助我们简化时间相关的处理代码:

package com.tianmaying.mavendemo;
import org.joda.time.LocalTime;
public class HelloWorld {
 ? ?public static void main(String[] args) {
 ? ? ? ?LocalTime currentTime = new LocalTime();
 ? ? ? ?System.out.println("The current local time is: " + currentTime);
 ? ? ? ?NewComer newComer = new NewComer();
 ? ? ? ?System.out.println(newComer.sayHello());
 ? ?}
}

我们使用 Joda Time 包提供的类来获取和打印当前时间。

这时候如果我们执行mvn,就会报编译错误。需要将 Joda Time 库添加到我们的 POM 依赖项中:

 ? ?
 ? ? ? ?...

ant ivy配置maven仓库_maven如何只使用本地仓库_pom.xml配置maven仓库

? ? ? ? ? ? ? ? ? ?joda-time ? ? ? ? ? ?joda-time ? ? ? ? ? ?2.2 ? ? ? ? ? ?

上面的 XML 定义了这个项目的依赖关系。在元素中,包含三个子元素:

还有一个 scope 属性,它有三个值:

此时运行mvn或mvn,Maven应该可以解析到Joda库,并从中央仓库下载,构建成功!

Maven 仓库

Maven仓库可以认为是基于Maven的组件(主要是Jar包)管理工具。您可以从中查找组件,也可以向其中添加组件。如果你用过Ant,你就会知道,通过Ant管理项目时,我们一般需要一个lib文件夹,各种依赖的Jar包都会放到里面,而为了协同的一致性,通常需要放到代码版本中管理系统。现在就很简单了maven如何只使用本地仓库,基于基于依赖的信息,Maven 可以递归地自动下载所有的依赖,直到整个依赖树被下载并放置在你的本地仓库中。Maven仓库本质上存放的是Jar包和元数据信息,通过原始信息可以准确定位到Jar包,

Maven 具有三种类型的存储库:

Maven会先从本地仓库开始,然后是中央仓库,最后如果pom文件中配置了远程仓库,就会去远程仓库中寻找依赖。

需要配置远程仓库。需要将文件添加到这样的配置中:


 ? 
 ? ? ? tianmaying
 ? ? ? http://tianmaying.com/maven2/lib
 ? 

在我们的学习过程中,使用Maven自带的中央仓库可以满足大部分情况,不需要额外配置。

快照依赖

Maven 还提供了一个非常方便的特性:快照依赖。快照依赖项是那些仍在开发中的内部依赖项。不用不断更新版本号来获取最新版本,可以直接依赖项目的快照版本。快照版本的每个构建版本都会被下载到本地仓库,即使快照版本已经在本地仓库中。始终下载快照依赖项以确保本地存储库中的每个构建版本都是最新的。对于我们的快速迭代开发来说,这是一个非常酷的功能。

开云·体育全站APP

扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流

郑重申明:开云体育APP网络以外的任何单位或个人,不得使用该案例作为工作成功展示!