Java通过Maven实现管理项目依赖

  介绍

这篇文章将为大家详细讲解有关Java通过Maven实现管理项目依赖,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

<强>项目的依赖

Java最大的一个优势之一应该是整个生态中无数的框架和API,我们创建实际的项目不可避免的都需要用到这些框架和API,而它们通常都是以JAR包的形式提供。我们之前在编译项目的时候,需要在类路径上存放依赖的JAR包。而且这些外部的JAR包还会有其他依赖。我们需要递归地一个个去下载所有这些外部依赖,并且要确保下载的版本都是正确的,当项目越来越复杂的时候,这是极其麻烦的事情,比如碰到JAR地狱的问题。

Maven现在来拯救我们了,Maven可以自动帮我们做依赖管理,我们需要做的就是在POM文件里指定依赖JAR包的名称,版本号,Maven会自动下载,递归地去下载所有依赖,我们可以从具体的依赖添加工作解放出来了。

<强>通过Maven定义依赖

之前的例子是一个完全自包含的项目,不需要额外的包依赖,因为它实在太简单了。我们来让这个例子稍微复杂一点,在打印“Hello World !”的时候同时打印出日期和时间,我们希望使用Joda提供的时间库来让帮助我们简化时间相关的处理代码:

包com.tianmaying.mavendemo;
  
  进口org.joda.time.LocalTime;
  
  公开课HelloWorld {
  公共静态void main (String [] args) {
  LocalTime currentTime=new本地时间();
  System.out.println(“当前本地时间是:“+ currentTime);
  新人新人=new新人();
  System.out.println (newComer.sayHello ());
  }
  }

我们使用Joda时间包提供的<代码>本地时间>

这时如果我们执行<代码> mvn编译代码将会报出编译错误。需要将Joda时间这个库添加到我们的POM依赖中:

 & lt; dependencies>
  
  …
  
  & lt; dependency>
  & lt; groupId> joda-time
  & lt; artifactId> joda-time
  & lt; version> 2.2 & lt;/version>
  & lt;/dependency>
  & lt;/dependencies> 

上面这段XML定义了这个项目的依赖在& lt; depency>元素中,包含三个子元素:

    <李> & lt; groupId>类似于项目所属的组织,所依赖的包也属于某一个组织李 <李> & lt; artifactId>李依赖包的名称 <李> & lt; version>依赖包的版本
      李,

依赖还有一个范围(范围)的属性,有三种取值:

    <李>编译表示这个依赖在编译时应该存在,这是范围的默认值 <李>提供表示这个依赖不仅在编译时需要,同时应该在运行时也存在,比如Java Servlet API的依赖李 <李>测试表示依赖在编译和测试时需要,但是运行时不要求存在,比如JUnit的依赖,运行时是不需要的

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

<强> Maven仓库

Maven仓库可以认为是基于Maven的一个构件(主要时Jar包)管理工具,你可以从里面找构件,也可以往里面增加构件。如果你用过蚂蚁就会知道,通过蚂蚁来管理项目时,我们一般都需要一个自由文件夹,各种依赖的Jar包都会放进去,而且为了协作的一致性,通常还需要放到代码版本管理系统中。现在轻松简单了,基于基于依赖的信息,Maven就可以自动地以递归的方式下载所有的依赖,直到整个依赖树都下载完毕并放到你的本地仓库中. Maven仓库本质上存储了Jar包和元数据信息,通过原信息能够准确定位到Jar包,从而能够获取和修改。

Maven有三种类型的仓库:

    <李>本地仓库:本地仓库默认在用户目录下,包含了下载的所有依赖李 <李>中央仓库:中央仓库由Maven自己提供的,本地仓库中的没有依赖默认都会去中央仓库查,找下载后会存放到本地仓库李 <李>远程仓库:远程仓库是远程服务器上可访问的仓库,本质类似于中央仓库(只不过中央仓库是权威罢了,而且你不能乱动:)。远程仓库可以本地网络中或者互联网上,一般团队内部会设置一个内部的远程仓库,这样可以解决安全共享,网络代理等问题。
      李,

Maven首先会从本地仓库,然后是中央仓库,最后如果pom文件中配置了远程仓库,会到远程仓库中查找依赖。

远程仓库需要配置。设置文件,需要加入类似这样的配置:

& lt; repositories>   & lt; repository>   & lt; id> tianmaying   & lt; url> http://tianmaying.com/maven2/lib</url>   & lt;/repository>   & lt;/repositories>

Java通过Maven实现管理项目依赖