这篇文章将为大家详细讲解有关Java通过Maven实现管理项目依赖,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
项目的依赖
Java最大的一个优势之一应该是整个生态中无数的框架和API,我们创建实际的项目不可避免的都需要用到这些框架和API,而它们通常都是以JAR包的形式提供。我们之前在编译项目的时候,需要在classpath上存放依赖的JAR包。而且这些外部的JAR包还会有其他依赖。我们需要递归地一个个去下载所有这些外部依赖,并且要确保下载的版本都是正确的,当项目越来越复杂的时候,这是极其麻烦的事情,比如碰到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包提供的LocalTime
类来获取和打印当前时间。
这时如果我们执行mvn compile
将会报出编译错误。需要将 Joda Time这个库添加到我们的POM依赖中:
<dependencies> ... <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>2.2</version> </dependency> </dependencies>
上面这段XML定义了这个项目的依赖。在<depency>元素中,包含三个子元素:
依赖还有一个范围(scope)的属性,有三种取值:
此时运行mvn compile或者mvn package,Maven应该可以解析到Joda库,并将其从中央仓库下载,构建成功啦!
Maven仓库
Maven仓库可以认为是基于Maven的一个构件(主要时Jar包)管理工具,你可以从里面找构件,也可以往里面增加构件。如果你用过Ant就会知道,通过Ant来管理项目时,我们一般都需要一个lib文件夹,各种依赖的Jar包都会放进去,而且为了协作的一致性,通常还需要放到代码版本管理系统中。现在轻松简单了,基于基于依赖的信息,Maven就可以自动地以递归的方式下载所有的依赖,直到整个依赖树都下载完毕并放到你的本地仓库中。Maven仓库本质上存储了Jar包和元数据信息,通过原信息能够准确定位到Jar包,从而能够获取和修改。
Maven有三种类型的仓库:
Maven首先会从本地仓库,然后是中央仓库,最后如果pom文件中配置了远程仓库,会到远程仓库中查找依赖。
远程仓库需要配置.settings文件,需要加入类似这样的配置:
<repositories> <repository> <id>tianmaying</id> <url>http://tianmaying.com/maven2/lib</url> </repository> </repositories>
快照依赖
Maven还提供一个非常方便的功能:快照依赖。快照依赖指的是那些还在开发中的内部依赖包。与其经常地更新版本号来获取最新版本,不如你直接依赖项目的快照版本。快照版本的每一个build版本都会被下载到本地仓库,即使该快照版本已经在本地仓库了。总是下载快照依赖可以确保本地仓库中的每一个build版本都是最新的。这对我们快速迭代开发是一个非常酷的特性。
关于Java通过Maven实现管理项目依赖就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。