Maven中的几个重要概念(一):repository

首先是Maven的官网guide,包含了相当多的内容。有时间的时候应该全部浏览一遍。

http://maven.apache.org/guides/index.html

 

参考原文:

http://maven.apache.org/guides/introduction/introduction-to-repositories.html


在Maven出现之前,如果我们希望在自己的程序中使用第三方类库,需要怎么做呢?

首先,得到这个类库的jar包。可以从官网上下载,也可以从别的地方copy过来。

然后把这个包import到IDE中的JRE System Library中,就可以开始使用了。

不算复杂,但使用Maven更简单。你只需要告诉Maven,我需要用某个类库,就OK了。

Maven将自动去获取你需要的这个类库,从哪?repository。

A repository in Maven is used to hold build artifacts and dependencies of varying types.

repository只有两种:local and remote。所以当你告诉Maven要使用某类库时(即当一个项目声明要使用一个dependency),Maven做的事情就是:

从它在网络上的远程repository 找到这个类库,下载到你本地的repository(默认在c盘 ...\.m2\repository)中。

如果Maven发现你本地的repository已经有这个类库,那就什么都不做。

因此,remote repository包含了相当丰富的流行的类库/框架/工具。如果你需要使用某个很偏门儿的类库,那么,通常还是只能用老方法,自己去下载先。

下载后可以在命令行中运行mvn install,将类库安装到自己本地的repository中去。


远程repository有两种,一种是由公共组织提供的:

a third party to provide their artifacts for downloading (for example, repo1.maven.org and uk.maven.org house Maven's central repository).

我们通常都会使用这些repository。这些repository有两个问题:

1,网络问题。例如你所在的环境没有网络。或者公司对互联网访问有限制,导致你无法访问到。

2,由于Maven已经相当流行,有时这些repository服务器会因为负载过高而出现问题。

默认情况下,会去默认的repository 下载artifact。

http://repo1.maven.org/maven2/ (从前提供了browse的功能,但是现在被禁止了)

如果不想使用这个默认的repository,可以在settings.xml中使用mirrors来指定别的。但是在POM中可以指定使用的repository所以这个设置可能被覆盖。

(关于settings.xml,可以参考 http://maven.apache.org/settings.html#Servers。个人认为要必要把这个也好好看看。)

另一种可以是公司自己搭建的,用于公司内部人员共享的repository。这样通常就不会有网络和负载的问题了。


文章最后讲述了如何搭建internal repository。有兴趣的同学自行参考。

需要说明的一点是:

Such an internal repository can be downloaded from using HTTP or the file system (using afile:// URL), and uploaded to using SCP, FTP, or a file copy.

Note that as far as Maven is concerned, there is nothing special about this repository: it is anotherremote repository that contains artifacts to download to a user's local cache, and is a publish destination for artifact releases.

因此repository没有什么特别,它可以是任何一个文件系统,上传和下载可以使用多种协议。

但需要使用repository manager来搭建一个repository server。

http://maven.apache.org/repository-management.html

讲述了3种repository manager工具,及其作用。

 

最后再提一下关于settings.xml。有两种settings.xml:

  • The Maven install: $M2_HOME/conf/settings.xml
  • A user's install: ${user.home}/.m2/settings.xml


第一个settings.xml,也称为global settings。第二种,也称为user settings。这里有一点及其重要的!不论是global settings还是user settings,settings.xml都不会被自动创建。

例如,你现在想把local repository放到一个你自己指定的地方,而不是默认的地方,就可以创建一个user settings,同时在其中指定你需要的位置。

创建方法很简单,到官网上copy一个例子,并修改相应的内容就可以了。user settings中的配置优先级更高。


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值