Maven 仓库

目录

本地仓库

中央仓库

远程仓库

Maven 依赖搜索顺序

Maven 阿里云(Aliyun)仓库

gradle 配置指南


在 Maven 的术语中,仓库是一个位置(place)。

Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。

在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。

Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。

Maven 仓库有三种类型:

  • 本地(local)
  • 中央(central)
  • 远程(remote)

本地仓库

Maven 的本地仓库,在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才被创建。

运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。

默认情况下,不管Linux还是 Windows,每个用户在自己的用户目录下都有一个路径名为 .m2/repository/ 的仓库目录。

Maven 本地仓库默认被创建在 %USER_HOME% 目录下。要修改默认位置,在 %M2_HOME%\conf 目录中的 Maven 的 settings.xml 文件中定义另一个路径。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0http://maven.apache.org/xsd/settings-1.0.0.xsd"><localRepository>C:/MyLocalRepository</localRepository></settings>

当你运行 Maven 命令,Maven 将下载依赖的文件到你指定的路径中。

中央仓库

Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。

中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,简单的Java项目依赖的构件都可以在这里下载到。

中央仓库的关键概念:

  • 这个仓库由 Maven 社区管理。
  • 不需要配置。
  • 需要通过网络才能访问。

要浏览中央仓库的内容,maven 社区提供了一个 URL:Maven Central Repository Search。使用这个仓库,开发人员可以搜索所有可以获取的代码库。

远程仓库

如果 Maven 在中央仓库中也找不到依赖的文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件。

举例说明,使用下面的 pom.xml,Maven 将从远程仓库中下载该 pom.xml 中声明的所依赖的(在中央仓库中获取不到的)文件。

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.companyname.projectgroup</groupId><artifactId>project</artifactId><version>1.0</version><dependencies><dependency><groupId>com.companyname.common-lib</groupId><artifactId>common-lib</artifactId><version>1.0.0</version></dependency><dependencies><repositories><repository><id>companyname.lib1</id><url>http://download.companyname.org/maven2/lib1</url></repository><repository><id>companyname.lib2</id><url>http://download.companyname.org/maven2/lib2</url></repository></repositories></project>

Maven 依赖搜索顺序

当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:

步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。

步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中以备将来引用。

步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。

步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。

Maven 阿里云(Aliyun)仓库

Maven 仓库默认在国外, 国内使用难免很慢,我们可以更换为阿里云的仓库。

修改 maven 根目录下的 conf 文件夹中的 settings.xml 文件,在 mirrors 节点上,添加内容如下:

<mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url></mirror>

如果想使用其它代理仓库,可在 <repositories></repositories> 节点中加入对应的仓库使用地址。以使用 spring 代理仓为例:

<repository><id>spring</id><url>https://maven.aliyun.com/repository/spring</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository>

在你的 pom.xml 文件 <denpendencies></denpendencies> 节点中加入你要引用的文件信息:

<dependency><groupId>[GROUP_ID]</groupId><artifactId>[ARTIFACT_ID]</artifactId><version>[VERSION]</version></dependency>

执行拉取命令:

mvn install

gradle 配置指南

Gradle是源于Apache Ant和Apache Maven概念的项目自动化构建开源工具,它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置面向Java应用为主。当前其支持的语言暂时有Java、Groovy、Kotlin和Scala。

Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。

在 build.gradle 文件中加入以下代码:

allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/public/' } mavenLocal() mavenCentral() } }

如果想使用其它代理仓,以使用spring仓为例,代码如下:

allProjects { repositories { maven { url 'https://maven.aliyun.com/repository/public/' } maven { url 'https://maven.aliyun.com/repository/spring/' } mavenLocal() mavenCentral() } }

加入你要引用的文件信息:

dependencies { compile '[GROUP_ID]:[ARTIFACT_ID]:[VERSION]' }

执行以下命令安装依赖:

gradle dependencies

./gradlew dependencies

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/98746.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ARM_汇编流水灯

ARM_汇编流水灯 .text .global _start _start: 设置GPIOE寄存器的时钟使能ldr r0,0x50000A28ldr r1,[r0] 从r0为起始地址的4字节数据取出存入r1orr r1,r1,#(0x01<<4) 第4位设置为1 表示开启时钟使能orr r1,r1,#(0x01<<5) 第5位设置为1 表示开启时钟使能str r1…

产品安全—CC标准 ISO/IEC 15408:2022

文章目录 1. 变化2. Part1 简介和一般模型3. Part2 安全功能组件4. Part3 安全保障组件5. Part4 评估方法和活动规范框架6. Part5 预定义的安全要求包7. 总结 1. 变化 增加了两个部分&#xff1a;评估方法和活动规范框架 & 预定义的安全要求包 术语已经过审查和更新&#…

关于 打开虚拟机出现“...由VMware产品创建,但该产品与此版VMwareWorkstateion不兼容,因此无法使用” 的解决方法

文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/133678951 红胖子(红模仿)的博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…

Ubuntu 配置repo环境

一. 前言 下载Android源码的时候&#xff0c;自己的Ubuntu电脑需要初始化repo环境&#xff0c;这样子你就可以使用 repo init -u ssh: repo sync 等命令下载代码&#xff0c; 在工作中&#xff0c;一般公司的代码仓 git-repo 是固定的&#xff0c;首次就需要把repo的初…

校招时间紧很迷茫?校招机会怎么把握?没有项目简历怎么写?

校招分为秋招和春招&#xff0c;可以说校招是应届生零工作经验进入大厂的唯一机会。 现在十月份也是招聘的重要时间&#xff0c;很多公司的校招从十月份开始&#xff0c;现在秋招如果你没有好的offer&#xff0c;可以好好准备来年的春招&#xff0c;我们为学员准备了丰富的面试…

【1++的Linux】之文件(一)

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的Linux】 文章目录 一&#xff0c;初识文件二&#xff0c;文件接口 一&#xff0c;初识文件 文件就是文件内容属性。因此对文件的操作无非就是对文件内容的操作和对文件属性的操作。 我们访问…

数据结构--》解锁数据结构中树与二叉树的奥秘(一)

数据结构中的树与二叉树&#xff0c;是在建立非线性数据结构方面极为重要的两个概念。它们不仅能够模拟出生活中各种实际问题的复杂关系&#xff0c;还常被用于实现搜索、排序、查找等算法&#xff0c;甚至成为一些大型软件和系统中的基础设施。 无论你是初学者还是进阶者&…

遥感数据与作物模型同化:遥感数据、PROSAIL模型、DSSAT模型、参数敏感性分析、数据同化算法、模型耦合

查看原文>>>遥感数据与作物模型同化实践技术应用 基于过程的作物生长模拟模型DSSAT是现代农业系统研究的有力工具&#xff0c;可以定量描述作物生长发育和产量形成过程及其与气候因子、土壤环境、品种类型和技术措施之间的关系&#xff0c;为不同条件下作物生长发育及…

【目标检测】大图包括标签切分,并转换成txt格式

前言 遥感图像比较大&#xff0c;通常需要切分成小块再进行训练&#xff0c;之前写过一篇关于大图裁切和拼接的文章【目标检测】图像裁剪/标签可视化/图像拼接处理脚本&#xff0c;不过当时的工作流是先将大图切分成小图&#xff0c;再在小图上进行标注&#xff0c;于是就不考…

CentOS 7 使用Docker

参考资料 Docker命令大全 黑马程序员docker实操教程 &#xff08;黑马讲的真的不错 容器与虚拟机 安装 yum install -y docker Docker服务命令 启动服务 systemctl start docker停止服务 systemctl stop docker重启服务 systemctl restart docker查看docker服务状态 syste…

kafka的请求处理机制

目录 前言&#xff1a; kafak是如何处理请求的&#xff1f; 控制请求与数据类请求 参考资料 前言&#xff1a; 无论是 Kafka 客户端还是 Broker 端&#xff0c;它们之间的交互都是通过“请求 / 响应”的方式完成的。比如&#xff0c;客户端会通过网络发送消息生产请求给 B…

GBU808-ASEMI小功率开关电源GBU808

编辑&#xff1a;ll GBU808-ASEMI小功率开关电源GBU808 型号&#xff1a;GBU808 品牌&#xff1a;ASEMI 芯片个数&#xff1a;4 封装&#xff1a;GBU-4 恢复时间&#xff1a;&#xff1e;50ns 工作温度&#xff1a;-55C~150C 浪涌电流&#xff1a;200A 正向电流&#…

【运维笔记】Docker 安装elasticsearch-7.4.0(在线Docker版)

一、准备工作&#xff1a; Centos 7.5 安装elasticsearch-7.4.0&#xff08;离线压安装传送链接&#xff09;&#xff1a;https://blog.csdn.net/seesun2012/article/details/124684107Centos 7.5 安装 Docker-24.0.6 详细步骤&#xff08;避坑版&#xff09;&#xff1a; htt…

剑指offer

数组 剑指offer面试题3 数组中重复的数字__牛客网 (nowcoder.com) 剑指代码,称J1&#xff1a; class Solution { public:// Parameters:// numbers: an array of integers// length: the length of array numbers// duplication: (Output) t…

计算机视觉——飞桨深度学习实战-图像分类算法原理与实战

基础理论&#xff1a; 图像分类是深度学习在视觉领域第一个取得突破性成果的任务。本章首先介绍了图像分类任务的发展历程与评价指标。然后分为三个角度分别介绍了在图像分类领域具有重要地位的三种模型。第一种是基于残差网络的模型&#xff0c;本章重点介绍了ResNet、DenseN…

「滚雪球学Java」教程导航帖(更新中)

作者&#xff1a;bug菌 博客&#xff1a;CSDN | 掘金 | infoQ | 51CTO 等 简介&#xff1a;CSDN/阿里云/华为云/腾讯云/51CTO博客专家&#xff0c;博客之星Top30&#xff0c;掘金年度人气作者Top40&#xff0c;51CTO年度>博主Top12&#xff0c;掘金/InfoQ/51CTO等社区优质创…

百万架构师亲码的亿级流量下的分布式限流解决方案

在互联网应用中&#xff0c;高并发系统会面临一个重大的挑战&#xff0c;那就是大量流高并发访问&#xff0c;比如&#xff1a;天猫的双十一、京东618、秒杀、抢购促销等&#xff0c;这些都是典型的大流量高并发场景。 高并发系统限流 短时间内巨大的访问流量&#xff0c;我们…

Python2-对象与变量-可变对象与不可变对象-可迭代对象-enumerate-zip-map

Python2-对象与变量-可变对象与不可变对象-可迭代对象-enumerate-zip-map 1.对象与变量2.对象的值的比较和引用判断is3.不可变对象与可变对象4.可迭代对象iterable5.enumerate()6.zip函数7.map函数 1.对象与变量 Python3中&#xff0c;一切皆为对象&#xff0c;Python语言的每…

基于javaweb的智慧社区设计与实现

目录 前言 一、技术栈 二、系统功能介绍 客户信息管理 客户信息管理 社区信息管理 车位租买支付 前台车位信息 车位预定提交 问卷调查管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理…

opengauss数据备份(docker中备份)

首先如果想直接在宿主机上进行使用gs_dump备份需要glibc的版本到2.34及以上&#xff0c;查看版本命令为 ldd --version 如图所示&#xff0c;本宿主机并不满足要求&#xff0c;所以转向在docker容器中进行备份&#xff0c; 然后进入opengauss容器中&#xff0c;命令为 docker…