Maven系列(二):Maven 核心概念

Maven系列(二):Maven 核心概念

一、仓库

1.1 Maven 仓库

仓库是一个位置(place),可以存储所有的工程 jar 文件、library jar 文 件、插件或任何其他的工程指定的文件。

严格意义上说,Maven 只有两种类型的仓库:

  • 本地(local)
  • 远程(remote)

1.2 本地仓库

Maven 的本地仓库是机器上的一个文件夹。它在你第一次运行任何 Maven 命令的时候创建。

Maven 的本地仓库保存你的工程的所有依赖(library jarplugin jar 等)。当你运行一次 Maven 构建时,Maven 会自动下载所有依赖的 jar 文件到本地仓库中。它避免了每次构建时都引用存放在远程仓库上的依赖文件。

Maven 的本地仓库默认被创建在 ${user.home}/.m2/repository目录下。要修改默认位置,只要在 settings.xml 文件中定义另一个路径即可,例如:

<localRepository>
	/anotherDirectory/.m2/respository
localRepository>

1.3 远程仓库

Maven 的远程仓库可以是任何其他类型的存储库,可通过各种协议,例如 file://http://来访问。

这些存储库可以是由第三方提供的可供下载的远程仓库,也可以是在公司内的 FTP 服务器或 HTTP 服务器上设置的内部存储库,用于在开发团队和发布之间共享私有的 artifacts

  • 中央仓库

    Maven 的中央仓库是 Maven 社区维护的,里面包含了大量常用的库,我们可以直接引用,是一个远程公用仓库,URL 地址:http://search.maven.org/

  • 第三方仓库

    也叫私服,是指公司自己内部搭建的公共类库站点,只提供给公司内部共享服务所使用,通常都是搭建在局域网内部使用,而且对于内部私服的连接,通常公司都会有相关的账号密码进行控制。

Maven系列(二):Maven 核心概念_第1张图片

1.4 仓库之间的关系

前面介绍了三种仓库,那这些仓库之间的关系是怎样的呢?或者说一个 Maven 项目想要获取一个jar包的话,他该从哪个仓库中去获取呢?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S3j8RqoN-1602658539828)(https://img.dusty.vip/Note/20200904172245.png)]

  1. 首先 Maven 会到本地仓库中去寻找所需要的jar包;
  2. 如果找不到就会到配置的私有仓库中去找;
  3. 如果私有仓库中也找不到的话,就会到配置的中央仓库中去找;
  4. 如果还是找不到就会报错。

但是这中间只要在某一个仓库中找到了就会返回了,除非仓库中有更新的版本,或者是snapshot版本。

1.5 仓库配置

假设我们要配置一个中央仓库,可以像下面这样配置:

<project>
	<profiles>
		<profile>
			<id>centralid>
  			<repositories>
  				<repository>
  					<id>Centralid>
					<name>Centralname>
					<url>http://repo.maven.apache.org/maven2/url>
				repository>
			repositories>
		profile>
	profiles>

	<activeProfiles>
		<activeProfile>centralactiveProfile>
	activeProfiles>
	...
project>

1.6 仓库管理器

如果每个开发者都单独配置一个中央仓库,那每个人都到中央仓库中去下载所需的 jar,这就退化成最原始的模式,并且是一个巨大的资源浪费。

仓库管理器是一种专用服务器应用程序,目的是用来管理二进制组件的存储库。对于任何使用 Maven 的项目,仓库管理器的使用被认为是必不可少的最佳实践。

仓库管理器提供了以下基本用途:

  1. 充当中央 Maven 存储库的专用代理服务器;
  2. 提供存储库作为 Maven 项目输出的部署目标;

使用仓库管理器可以获得以下优点和功能:

  1. 显著减少了远程存储库的下载次数,节省了时间和带宽,从而提高了构建性能;
  2. 由于减少了对外部存储库的依赖,提高了构建稳定性;
  3. 与远程 SNAPSHOT 存储库交互的性能提高;<

你可能感兴趣的:(Maven,maven,java)