`
1028826685
  • 浏览: 938446 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类

Maven中的库(repository)详解

 
阅读更多

Maven中的库(repository)是构件(artifact)的集合。构件以一定的布局存储在库中。

Maven中的库(repository)可以分为本地库和远程库。本地库在安装Maven的计算机上的指定路径下(通常是用户主目录下的.m2/repository),本地库中的构件往往是远程库中下载到本地的部分构件,被本地项目所引用。当然,本地项目发布时,默认也发布到本地库中。远程库往往是由第三方提供的,用于发布构件供项目下载使用,如著名的Maven central库。

根据构件的用途,构件可以分为两类,一类是被其他构件依赖的构件(dependencies),这也是Maven库中主要的构件。另一类是插件(plugins),这是一种特殊的构件。对于依赖的构件,其所在的库通过<repositories>设置。但是对于插件的构件,由于插件的特殊性,所以插件库独立于依赖库,使用<pluginRepositories>单独设置。但是由于依赖和插件都属于构件,所以<repositories>和<pluginRepositories>中的设置基本一致。

如果一个项目需要依赖一个构件,Maven编译的时候会首先从本地库查找该构件。如果本地库中没有,再根据配置的远程库信息,逐个去远程库中查找该构件。

 

如果在远程库中找到则下载到本地库,如果在所有的远程库中都没有则会抛出编译异常。

Maven中要配置库,可以有多种方式。最直接的是在项目中的pom.xml文件中,通过<repositories>配置库,这样配置的库仅适用于当前项目。也可以通过<profiles>中的<repositories>配置在特定环境下的特殊库,这可以在项目的pom.xml文件中实现,也可以在Maven的settings.xml中实现。

此外,一个项目发布后,其往往要被部署到一个库中,作为库的构件以供其他项目引用。通过<distributionManagement>中的<repositories>配置要发布的库。

1. 在pom.xml或settings.xml中设置<repositories>,往往需要提供一个<repository>的如下信息:

  • id,库的ID
  • name,库的名称
  • url,库的URL
  • layout,在Maven 2/3中都是default,只有在Maven 1.x中才是legacy
  • releases,库中版本为releases的构件
  • snapshots,库中版本为snapshots的构件

 

根据构件的版本,可以将构件分为releases类型的构件和snapshots类型的构件。

对于一个构件,其版本的变化是否会引起库中更新该构件呢?则需要根据库的<releases>或<snapshots>设置。<releases>和<snapshots>的设置参数一致,如下所示:

 

  • enabled,是否支持更新
  • updatePolicy,构件更新的策略,可选值有daily, always, never, interval:X(其中的X是一个数字,表示间隔的时间,单位min),默认为daily
  • checksumPolicy,校验码异常的策略,可选值有ignore, fail, warn

 

在pom.xml中定义<repository>的示例如下:

 

[html] view plain copy
  1. <repositories>  
  2.   <repository>  
  3.     <releases>  
  4.       <enabled>false</enabled>  
  5.       <updatePolicy>always</updatePolicy>  
  6.       <checksumPolicy>warn</checksumPolicy>  
  7.     </releases>  
  8.     <snapshots>  
  9.       <enabled>true</enabled>  
  10.       <updatePolicy>never</updatePolicy>  
  11.       <checksumPolicy>fail</checksumPolicy>  
  12.     </snapshots>  
  13.     <id>codehausSnapshots</id>  
  14.     <name>Codehaus Snapshots</name>  
  15.     <url>https://repository-master.mulesoft.org/nexus/content/groups/public/</span></url>  
  16.     <layout>default</layout>  
  17.   </repository>  
  18. </repositories>  


 

2.在pom.xml中的<distributionManagement>,负责管理构件的发布包和其他编译生成的支撑文件。

在<distributionManagement>中也可以配置一个<repository>。这里的<repository>给出的是当前项目部署后所发布的库,示例如下:

 

[html] view plain copy
  1. <distributionManagement>  
  2.   <repository>  
  3.     <uniqueVersion>false</uniqueVersion>  
  4.     <id>corp1</id>  
  5.     <name>Corporate Repository</name>  
  6.     <url>scp://repo/maven2</url>  
  7.     <layout>default</layout>  
  8.   </repository>  
  9.   <snapshotRepository>  
  10.     <uniqueVersion>true</uniqueVersion>  
  11.     <id>propSnap</id>  
  12.     <name>Propellors Snapshots</name>  
  13.     <url>sftp://propellers.net/maven</url>  
  14.     <layout>legacy</layout>  
  15.   </snapshotRepository>  
  16.   ...  
  17. </distributionManagement>  
该<repository>的url是当前Maven项目的构件所发布的地址(但是注意,未必是访问该构件的地址)。

 

 

<distributionManagement>中还可以配置一个<snapshotRepository>,表示开发过程中的发布库。<snapshotRepository>的设置与<repository>一样。如果没有设置<snapshotRepository>,还可以将<repository>用作<snapshotRepository>。

关于<distributionManagement>的具体用法参见后续文章。

 

3.在pom.xml或settings.xml中的<profile>中都可以设置<repositories>或<pluginRepositories>其中的<repository>设置与在<profile>外设置<repositories>中的<repository>一样。

<profile>中的<repositories>表示在该<profile>环境中所特有的库。

关于<profile>的具体用法参见后续文章。

分享到:
评论

相关推荐

    maven3.3.9+repository.zip

    ** Maven 3.3.9 仓库资源详解 ** Maven 是一个强大的项目管理工具,广泛应用于Java开发领域。它通过使用一个项目对象模型(Project Object Model,POM)来管理项目的构建、报告和依赖关系。Maven 3.3.9 是 Maven 的...

    maven_repository.rar

    《 Maven 仓库详解及其在开发中的重要性 》 Maven 是一个强大的项目管理工具,尤其在Java开发领域中被广泛使用。它自动化了构建、依赖管理和项目信息管理,极大地提高了开发效率。本文将深入探讨 Maven 仓库的概念...

    jeesite_maven_repository.rar

    《Jeesite Maven Repository详解与应用》 Jeesite是一个基于Spring Boot的开源企业级开发框架,它提供了丰富的功能模块,如权限管理、工作流、报表等,旨在提高开发效率和降低开发难度。在开发Jeesite项目时,正确...

    maven_repository.zip

    - **远程仓库 (Remote Repository)**:这是Maven官方或者第三方提供的存储库,例如Central Repository(中央仓库)是Maven最常用的远程仓库,它存储了大量的开源Java项目JAR包。开发者在编译项目时,Maven首先会尝试...

    Maven仓库链接下载

    Maven仓库是Java开发中不可或缺的一部分,它是一个中央存储库,包含了大量的开源项目构件(JAR文件),使得开发者能够方便地管理和下载所需的依赖。Maven通过使用一个统一的配置方式,简化了项目的构建、依赖管理和...

    Maven的Dependency详解

    当Maven执行构建时,它会根据这些信息在Maven的Repository中寻找对应的库文件(JAR包)。 Maven的Repository是存储依赖的地方,分为Local Repository(本地仓库)和Remote Repository(远程仓库)。Local ...

    maven本地仓库-3.6.0

    Maven本地仓库是Maven在本机上存储下载的依赖库、插件和其他资源的地方,它在Maven的工作流程中扮演着至关重要的角色。 ** Maven本地仓库的作用 ** 1. **缓存依赖**: Maven在构建项目时,会自动下载项目所依赖的...

    maven及其maven本地仓库

    默认情况下,Maven将本地仓库设置在用户的主目录下的`.m2`文件夹中,路径通常为`~/.m2/repository`。当项目中的POM文件声明了某个依赖时,Maven会首先查找本地仓库,如果找到则直接使用,如果没有,则会去中央仓库或...

    Maven本地仓库.zip

    在Maven中,本地仓库(Local Repository)扮演着至关重要的角色,它是Maven在构建项目时存储依赖项的地方。 ### Maven依赖管理 Maven依赖管理的核心在于它的中央仓库,这是一个全球共享的存储库,包含了大量开源...

    最新Maven-apache-maven-3.8.1-Repository-配置好的

    ** Maven 知识点详解** Maven 是一个强大的项目管理和构建工具,主要应用于Java开发领域。它通过使用一种标准化的项目对象模型(Project Object Model,POM),可以帮助开发者管理项目的依赖、构建过程以及报告。...

    maven修改本地仓库

    在 Maven 构建过程中,会下载所需的依赖库并缓存到本地仓库中。 **本地仓库**:Maven 在构建项目时会将所有依赖的 jar 包以及项目构建出的 artifact 保存到本地磁盘的一个目录中,这个目录称为本地仓库。默认情况下...

    Maven之远程仓库的配置详解

    在Maven的构建管理中,远程仓库扮演着至关重要的角色,因为它们允许开发者访问除了默认中央仓库之外的自定义或组织内部的构件。本文将深入探讨如何配置Maven的远程仓库,以便在项目中顺利获取所需的依赖。 首先,...

    maven.rar=maven安装包+maven仓库

    ** Maven详解 ** Maven,一个强大的Java项目管理和构建工具,是开发人员不可或缺的利器。它通过使用一种标准的项目对象模型(Project Object Model,POM)来管理项目依赖关系,构建过程,以及配置信息。这个压缩包...

    Maven安装及配置详解.pdf

    ### Maven安装及配置详解 #### 一、Maven概述与优势 Maven是Apache软件基金会的一个开源项目,作为一款优秀的项目构建工具,它能够帮助开发者有效地管理项目中的jar包及jar包之间的依赖关系,同时也支持项目的编译...

    maven仓库插件

    ** Maven仓库插件详解 ** Maven仓库插件是Apache Maven项目的核心组成部分,它负责管理项目的依赖、构建工件并将其部署到指定的仓库。在Java开发领域,Maven已经成为了构建和管理项目的主要工具之一,其强大的依赖...

    pom配置文件 maven_repository.rar

    `maven_repository.rar`就是一个包含了大量Maven库的压缩文件,其中包含了各种常用的依赖,可以解压后用作本地仓库。 离线使用`maven_repository.rar`的步骤如下: 1. **解压文件**:首先,你需要将`maven_...

    maven安装包和仓库

    ** Maven 安装与仓库详解 ** Maven 是一个强大的 Java 项目管理工具,它简化了构建、依赖管理和项目生命周期的管理。对于 Java 开发者来说,Maven 是不可或缺的一部分,因为它能自动化构建过程,包括编译、测试、...

    maven本地仓库

    在Maven中,本地仓库(Local Repository)扮演着至关重要的角色,它是Maven在构建项目时查找依赖的地方。 ** 本地仓库的位置 ** 在Windows系统中,Maven默认的本地仓库位于用户主目录下的`.m2`文件夹中,具体路径...

    maven介绍及配置详解

    ### Maven介绍及配置详解 #### 一、Maven概述 Maven是由Apache软件基金会支持的一款项目管理和理解工具,主要用于Java项目的构建与管理。Maven通过一个中心信息来管理项目的构建、报告和文档,大大简化了Java项目...

Global site tag (gtag.js) - Google Analytics