`

maven学习之maven仓库简章

阅读更多
一、Maven世界中,任何一个依赖、插件或者项目构件的输出,都可以成为构件。
例如log4j-1.2.15.jar、maven-compiler-plugin-2.0.2.jar、以及las-im-basis-1.0.0-SNAPSHOT.jar都是一个构件。Maven可以在一个位置唯一管理所有maven项目共享的构件,这个位置就是仓库。
二、仓库布局,一个构件的位置为
groupId/artifactId/version/artifactId-version-[classifier].packing
三、仓库分类

四、本地仓库一般位于用户目下的.m2/repository/,用户级别的settings.xml文件一般位于用户目下的.m2/下,修改本地仓库的位置,则在settings.xml中
<settings>
     <localRepository>本地仓库位置</localRepository>
….
</settings>
安装好maven后,如果不执行任何maven命令,本地仓库目录是不存在的,当用户输入执行第一条maven命令后,本地仓库目录才创建。
五、中央仓库在maven安装目录下的lib的maven-model-builder-xx.jar中的org/apache/maven/model/pom-4.0.0.xml中定义的,所有的maven项目都会继承这个超级pom。
六、私服是一种特殊的远程仓库,是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的maven用户使用,例如XX公司的maven构件私服。
七、很多情况下,默认的中央仓库无法满足项目需求,需要额外配置一个或者多个其他的远程仓库,配置这些信息可以在pom文件中配置,也可以在settings.xml中的<profiles>中<profile>配置仓库信息,并且激活该profile.
在pom中配置仓库信息
<project>
….
<repositories>
<repository>
<id>jboss</id>
<name>jboss repository</name>
<url>….</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
<layout>default</layout>
</repository>
……
</project>
如果id为central则覆盖了中央仓库
Releases、snapshots元素控制maven对于发布版构件和快照版构件的下载,true代表可以下载,false代表不可以下载。除了enabled外,releases、snapshots还有其他元素,例如
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</snapshots>
updatePolicy:默认值为daily,此外还有never、always(每次构建都更新)、interval:X(每隔X分钟更新一次);
checksumPolicy:用来配置maven检查校验和文件的策略。当构件被部署到maven仓库时,会同时部署对应的校验和文件。当下载时,maven会验证校验和文件,当验证失败,怎么办,checksumPolicy用来控制验证,默认为warn,执行构建时输出警告信息,此外还有ignore,忽略验证失败,fail,验证失败则构建也失败。
八、远程仓库认证
有的情况下,出于安全考虑,访问远程仓库需要认证,认证信息需要在settings.xml中配置
<settings>
….
<servers>
<server>
<id>jboss</id>
<username>….</username>
<password>….</password>
<server>
<servers>
…..
<settings>
Id值需要与远程仓库的id一致。
九、部署构件至远程仓库
Mvn clean install将构件安装到本地仓库,当需要将构件部署至远程仓库时,配置pom如下:
<project>
…..
<distributionManagement>
<repository>
<id>…</id>
<name>…</name>
<url>….</url>
</repository>
<snapshotRepository>
<id>…</id>
<name>…</name>
<url>….</url>
</snapshotRepository>
</distributionManagement>
….
</project>
当部署至远程仓库时需要认证时,跟之前的一样,需要在settings.xml中配置。
配置好这些之后,运行mvn clean deploy即可
十、快照版本
快照代表着不稳定。
当本地仓库没有依赖的构件的时候,maven会自动从远程仓库下载,当依赖的构件是SNAPSHOT版本的时候,maven会自动找到最新的快照。背后的解析机制:
1、当依赖的范围为system时,maven直接从本地文件系统解析构件
2、根据依赖坐标计算仓库路径后,尝试直接从本地仓库解析构件,如果发现相应构件,则下载
3、在本地仓库如果没有发现相应的构件的情况下,如果所依赖的版本是显示的发布版本构件,如1.2、2.1-beta-1等,则遍布所有的远程仓库,发现后解析使用
4、如果所依赖的版本为RELEASES或者LATEST,则基于更新策略(updatePolicy)读取所有远程仓库的元数据groupId/artifactId/maven-metadata.xml,将其与本地仓库的对应元数据合并后,计算出RELEASE或者LATEST真实的值,然后基于这个真实的值检查本地和远程仓库。
5、如果依赖的版本是SNAPSHOT版本,则基于更新策略(updatePolicy)读取所有远程仓库的元数据groupId/artifactId/version/maven-metadata.xml,将其与本地仓库的对应元数据合并后,得到最新快照版本的值,然后基于这个真实的值检查本地或者远程仓库。
6、如果最后得到的构件版本是时间戳格式的快照,则复制其时间戳格式的文件至非时间戳格式,如SNAPSHOT,并使用该非时间戳格式的构件。
由于RELEASES或者LATEST容易带来一些问题,所以maven3不再支持在插件版本中使用LATEST和RELEASES,如果不设置插件的版本,其效果和RELEASES一样,maven会去解析最新的发布版的构件。
强制检查更新的命令 mvn clean install –U.
十一、镜像
如果仓库X提供了仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像,在settings.xml中配置镜像信息。
<settings>
….
<mirrors>
<mirror>
<id>…</id>
<name>…</name>
<url>….</url>
<mirrorOf>….</mirrorOf>
<mirror>
<mirrors>
….
<settings>
mirrorOf的值即为仓库的id值,如果镜像仓库不稳定造成无法解析构件,则被镜像的仓库也不能访问到了。
十二、几个仓库搜索服务地址
http://repository.sonatype.org/
http://www/jarvana.com/jarvana
http://www.mvnbrowser.com
http://mvnrepository.com/
  • 大小: 10.1 KB
分享到:
评论

相关推荐

    maven配置阿里云镜像仓库

    maven配置阿里云镜像仓库,maven配置阿里云镜像仓库,maven配置阿里云镜像仓库。

    maven学习笔记maven学习笔记

    maven学习笔记maven学习笔记maven学习笔记

    Maven常用命令 Maven Maven学习

    Maven常用命令 Maven Maven学习

    nexus 搭建 maven仓库

    nexus 搭建 maven仓库nexus 搭建 maven仓库nexus 搭建 maven仓库nexus 搭建 maven仓库nexus 搭建 maven仓库

    maven学习.zip

    本教程"maven学习.zip"主要关注的是Maven插件的使用,下面将详细介绍Maven插件及其在实际开发中的应用。 **1. Maven插件的概念** Maven插件是Maven生态系统的核心组成部分,它们提供了各种功能,如编译源代码、打包...

    Maven: 仓库搜索服务

    当你需要引入新的库或jar包到你的项目中时,Maven仓库搜索服务就显得尤为重要。本文将详细介绍如何利用Maven仓库搜索服务来查找并获取所需的依赖坐标。 Maven依赖的基本格式是groupId:artifactId:version,它由三...

    maven学习资料 maven学习资料 maven学习资料 maven学习资料

    maven学习资料

    maven本地仓库

    Maven仓库分为三种类型:本地仓库(Local Repository)、远程仓库(Remote Repository)和中央仓库(Central Repository)。本地仓库是默认的首要资源,Maven首先在这里查找项目依赖。如果找不到,它会尝试从远程...

    Maven很Maven仓库

    【Maven很Maven仓库】这个标题暗示了讨论的核心是关于Maven以及它与Maven仓库的关系。Maven是一个在Java开发中广泛使用的项目管理和综合工具,它通过一个声明式的配置来管理项目的构建、报告和文档。Maven仓库则是...

    maven学习资源整理

    这本书是Maven的另一经典之作,英文原版为“Better Builds with Maven”。作者详细阐述了如何使用Maven提高软件构建的质量和效率,强调了Maven在自动化测试、持续集成和项目治理中的作用。书中的案例和实践建议对...

    maven创建多个本地仓库的方法

    ### Maven 创建多个本地仓库的方法 Maven 是一款项目管理和构建工具,主要用于 Java 项目的构建、依赖管理和项目信息管理。为了更好地管理和控制不同项目的依赖关系,有时我们可能需要为不同的项目设置独立的本地...

    maven仓库清理命令

    maven仓库清理命令

    超全面搭建Maven仓库

    ### 超全面搭建Maven仓库 Maven是一款强大的项目管理工具,主要用于Java项目的构建、依赖管理和项目信息管理。本文将详细介绍如何搭建Maven环境、配置Maven仓库以及在Eclipse中集成Maven。 #### 一、下载安装Maven...

    Maven学习文档

    ### Maven 学习文档知识点详解 #### 一、Maven简介 Maven 是一款非常流行的 Java 项目的构建管理和依赖管理工具。它可以帮助开发者自动化构建过程,简化项目管理和部署流程。通过使用 Maven,开发者可以轻松地管理...

    maven学习指南java(经典,实例)

    Maven的约定优于配置(Convention over Configuration)原则是其核心理念之一,指的是开发中遵循约定而非配置,可以显著提高效率。在该原则的指导下,许多默认的配置被简化,使得开发者可以专注于更为重要的开发任务...

    Maven学习笔记.zip

    **Maven学习笔记** 在Java开发领域,Maven是一个不可或缺的构建...本学习笔记涵盖了Maven的基础知识,从安装到使用,希望能为你的Maven学习之路提供帮助。在实际开发中,不断实践和探索,你将更加熟练地驾驭Maven。

    maven本地仓库下载

    Maven的本地仓库是Maven系统的核心组件之一,它存储了项目所需的jar包和其他依赖,使得在构建项目时可以快速访问这些资源,而无需每次都从远程仓库下载。 在Maven的工作流程中,当项目构建时,Maven会首先检查本地...

    Maven3.0学习文档

    【Maven 3.0 学习文档】 Maven 是一个强大的项目管理和自动化构建工具,主要应用于Java项目。它的核心理念是Project Object Model (POM),这是一个XML格式的配置文件,用于描述项目的元数据,包括项目的依赖、构建...

    Maven学习指南.pdf

    【Maven学习指南】 Maven是一个强大的项目管理工具,源于Apache组织,专为基于Java平台的项目构建、依赖管理和项目信息管理而设计。它通过一个明确的项目对象模型(POM)来描述项目,利用其内置的项目生命周期和...

    Maven学习必要插件

    2. **Maven仓库** Maven使用中央仓库来存储各种开源库,开发者在POM中声明依赖后,Maven会自动从仓库中下载这些依赖。同时,也可以配置私有仓库,用于存放公司内部或特定项目特有的库。 3. **Maven生命周期** ...

Global site tag (gtag.js) - Google Analytics