Ivy: 搭建本地仓库

ivy学习与练习 感谢同事给的学习资料!本文来自一位我非常佩服的同事,虽说他也是刚接触这些知识,但超强的学习能力是我所敬佩的。 Apache Ivy是一个优秀的管理(记录、跟踪、解析和报告)项目依赖的工具,可与Apache Ant紧密集成。目前网上关于ivy的文章比较少,比较全面的资料有ivy自带的英文文档,如有疑惑可反复查看文档说明。通过学习文档结合下面的例子学习效果会更好。 阅读详情

基本上, 搭建一个本地的ivy仓库, 包含两件独立的事情: 搭建仓库本身, 和配置如何使用这个仓库

 

仓库本身

Ivy的Repository是由一个个Module组成的, Module则包含自身的artifacts(通常是jar文件)和描述文件.

Module的描述文件是ivy的核心, 里面记录了这个module包含哪些artifacts和这个module对其它module的依赖. 这样就能顺藤摸瓜, 牵出所有的依赖来

<ivy-module version="1.0">

<info organisation="your.company" module="your.project" />

<configurations>

<conf name="release" />

<conf name="testing" extends="release" />

</configurations>

<publications>

<artifact name="common" />

<artifact name="client" />

<artifact name="server" />

</publications>

<dependencies defaultconf="release->default">

<dependency name="ant" rev="1.7.0" />

<dependency name="antlr" rev="2.7.6" />

<dependency name="xstream" rev="1.2.2" />

</dependencies>

</ivy-module>

仓库在文件系统上的结构, 可以由你自己决定, 只要在使用这个仓库时, 把它的布局信息用配置文件描述出来告诉使用者就可以了

 

如何使用这个仓库

基本上, 我们借助 Ant 来使用ivy, 那么我们需要告诉 Ant 一些repository相关的信息 : Where is the local repository, and How it looks like

<property name="ivy.local.default.root" location="/your/local/ivy/repository/folder" />

<ivy:settings id="ivy.instance" file="${ivy.local.default.root}/ivy.repository.settings.xml" />

那个ivy.repository.settings.xml就是来描述repository的布局的:

<ivysettings>

<settings defaultResolver="local" />

<resolvers>

<filesystem name="local" checkmodified="true">

<artifact pattern="${ivy.local.default.root}/[module]/[artifact].jar" />

<artifact pattern="${ivy.local.default.root}/[module]/[artifact]-[revision].jar" />

<ivy pattern="${ivy.local.default.root}/[module]/[module]-dependencies.xml" />

</filesystem>

</resolvers>

</ivysettings>

然后你告诉 Ant 你的项目的依赖和artifacts, Ant就可以帮你获得依赖和发布artifacts了

<property name="ivy.dep.file" location="${basedir}/my-module-dependencies.xml" />

<ivy:retrieve />

<!-- retrieve dependencies first, then compile, package, ... then publish-->

<ivy:publish resolver="local" pubrevision="1.0" overwrite="true" forcedeliver="true">

<artifacts pattern="${build.dir}/dist/[artifact].[ext]" />

<artifacts pattern="${basedir}/my-module-dependencies.xml" />

</ivy:publish>

那个my-module-dependencies.xml就是你的项目的依赖描述符, 事实上ivy也将它看作一个module,和repository里的module一视同仁. 参考最开始的例子.

 

Ivy 如何解决我们的问题

Q: 我的项目在开发环境和产品环境有不同的依赖, 怎么办?

A: Ivy 提供了"configuration" 的概念. 在那个my-module-dependencies.xml中, 你可以为你的module定义development和product两种配置, 可以指定每个artifact隶属于哪个配置, 指定每个dependency属于哪个配置. 注意这是一个递归定义, 因为你依赖的module也有可能定义了多个配置, 你需要指定你依赖于依赖的哪个配置,所以这是一个映射. 比如你的产品在运行环境中依赖于spring的产品环境:

<ivy-module version="1.0">

<info organisation="your.company" module="your.project" />

<configurations>

<conf name="product" />

<conf name="development" />

</configurations>

<dependencies defaultconf="product->default">

<dependency name="spring" rev="1.7.0" conf="release->product" />

<dependency name="antlr" rev="2.7.6" conf="development->debug" />

<dependency name="junit" rev="4.4" conf="development->release" />

</dependencies>

</ivy-module>

ivy 的各个Ant task允许你指定在哪个 configuration 上操作; 如为product配置取得所有依赖:

    <ivy:retrieve conf="product" />

 

Q: 我的项目在开发环境和产品环境有太多相同的依赖, 事实上开发环境包含产品环境所有的依赖, 额外再加上junit,jmock等; 如何消除重复的依赖描述呢?

A: Ivy 提供了配置之间 "extends" , 也就是"继承"的概念, 你可以让开发环境的配置继承自产品环境的配置, 这样就可以复用产品环境的配置

<configurations>

<conf name="product" />

<conf name="development" extends="product" />

</configurations>

 

Q: 缺省ivy总是从缓存中读取配置, 这样我的依赖配置更新后却得不到反映; 怎么禁止从cache中读取配置?

A: <filesystem name="local" checkmodified="true">

 
K8S复习(五):搭建K8S本地 harbor 仓库 写在前面: 在工作中,我们可能没有几乎使用外网拉取镜像,为了使实验环境尽量真实,我将在本篇博文中搭建 harbor 仓库来模仿工作环境 1、添加 yum 源,安装 docker [root@server4 yum.repos.d]# vim docker.repo [docker] name=docker-ce baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/ gpgcheck=0 [extras] 阅读详情

相关推荐

汽车电子底层软件开发入门:核心技能与学习路线

嵌入式系统开发中,底层软件直接操作微控制器寄存器与外设,是连接硬件与上层应用的关键层。其原理涉及存储器映射、中断控制、通信协议栈等,技术价值在于保障实时性、可靠性与功能安全。在汽车电子领域,底层软件支撑CAN、LIN、FlexRay及车载以太网通信,并实现UDS诊断服务与AUTOSAR MCAL配置。典型应用场景包括域控制器、ECU开发与国产芯片适配。掌握C语言、微控制器架构、通信协议及诊断协议,是进入汽车电子底层软件开发的基础路径。

weixin_34414196的博客 230

ivy教程(3)-调整默认设置

    ivy绑定一些默认设置,这使得在通常环境下使用ivy很容易。这个教程,接近于参考文档,解释这些默认设置是什么和他们怎样调整来满足你的需要。     为了完整的理解设置的概念和你可以用它们做什么,我们建议阅读其他和设置相关的教程(如Multiple Resolvers 和 Dual Resolver )或者设置文件 的参考文档。 1) 概念     默认设置主要是3种仓库组...

敖小剑的博客 522

快速搭建本地代码仓库并实现Gradle脚本发布

快速搭建本地代码仓库并实现Gradle脚本发布 做为一名有经验的安卓开发人员,相信大家都知道Maven仓库与Jcenter仓库,这是目前全球最常用的两个,其中Jcenter是目前最大的一个Java与Android开源软件构建仓库,而且我们经常用的Android Studio就是默认支持Jcenter 材料 JFrog提供免费并开源的Artifactory环境包,点击下载,官网:http

QJay.Dev 4092

Eclipse Ivy 搭建项目仓库

Eclipse Ivy搭建项目仓库

xiongyouqiang的博客 2562

IVY 远程库配置

NULL 博文链接:https://jerry--xie.iteye.com/blog/1840582

Sigrity IBIS建模实战:如何用T2B工具快速转换SPICE模型(附避坑指南)

本文详细介绍了如何使用Sigrity T2B工具将SPICE模型高效转换为IBIS模型,涵盖从环境配置、模型预处理到转换流程和验证策略的全过程。通过实战案例和避坑指南,帮助硬件工程师掌握高速电路设计中的IBIS建模技术,提升信号完整性分析效率。

weixin_29243279的博客 395

ivy引用本地maven仓库依赖

A项目使用ivy管理依赖,B项目使用maven管理依赖,如果A要依赖B该如何做呢?我的做法是: 首先B要安装到本地的maven仓库,即执行mvn install。然后在A项目的ivysetting中设置仓库查找位置,将本地maven仓库位置包含进来:

liw783的专栏 4946

200SMART PLC时间不准?手把手教你用MCGS触摸屏实现自动校时(附完整代码)

本文针对西门子200SMART PLC时钟不准的常见问题,提供了一套基于MCGS触摸屏的自动校时解决方案。文章详细阐述了时钟偏差的根源、时间同步方案的技术选型,并手把手指导如何配置MCGS与PLC的通信,以及编写完整的PLC时间读取、转换与设置代码,最终实现稳定可靠的自动时间同步功能。

jupyter5notebook的博客 456

ivy教程(9)-架设仓库(1)-介绍

    install任务让你从一个仓库复制一个模块或者模块集合到另一个仓库。这对于构建和维护一个企业或者团队仓库非常有用。如果你不想你的团队中的开发人员都访问公共的maven2仓库(例如为了控制哪些模块可以在你的公司或者你的团队中使用),答复开发人员的请求来手工增加新的模块或者新的版本在某些时候变得令人厌烦。     幸运的是install任务可以在这里提供帮助: 你可以为你的用于维护目标...

敖小剑的博客 209

可视化大屏系列(5):设备状态面板与数据分析仪表盘

在这篇文章中,我们将重点讨论如何通过智能化手段提升工地设备的管理效率与维护质量。随着智能工地系统的不断发展,设备监控与维护管理变得尤为重要。本篇将从 设备状态实时监控、自动化维护提醒、设备管理与维修记录 三个方面入手,展示如何通过 Vue3 和 ECharts 构建一个智能化的设备管理平台,实时采集和展示设备运行状态、及时生成维护提醒并记录维修历史,以提高设备的使用效率与安全性。我们还将结合实际代码示例,详细讲解如何实现这些功能,帮助你在智能工地项目中实现设备管理的智能化、数字化和自动化。

一名热衷于技术的全栈开发者,专注于前端与后端的全面技术探索。在这里,我将分享我在技术领域的学习与成长,助力更多开发者的进步。 3365

无人驾驶Autoware导读

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对无人驾驶Autoware介绍做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 2397

本地jar安装到maven仓库 和 ivy仓库方法

为什么80%的码农都做不了架构师?>>> ...

weixin_33911824的博客 725

多模态轨迹预测:行人、车辆的交互式推理

多模态轨迹预测:行人、车辆的交互式推理 ,人工智能,计算机视觉,大模型,AI,本文围绕多模态轨迹预测中行人与车辆的交互式推理展开,介绍了其定义,即综合多种信息预测交通参与者未来多种轨迹。涵盖基础概念如轨迹表示、模态、交互关系,技术框架包括数据处理、特征提取、预测模型(物理、机器学习、深度学习模型等)及结果评估。还探讨了交互式推理方法、面临的不确定性处理等挑战、应用场景、未来发展方向、相关工具及实际案例,展现了该技术在智能交通等领域的重要性与发展潜力。​

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 14万+

构建Java本地仓库(构件库)——Nexus OSS

软件开发到一定程度,开始进行构件级别的共享。这里以Java构建为例,即共享Jar包。 1、依赖管理 Java项目比较流行的依赖管理软件为Maven和Ivy,此处不再做展开,可分别参考以下链接: Maven:http://maven.apache.org/ Ivy:https://ant.apache.org/ivy/ Maven不仅仅是一个依赖管理,他还能帮助你完成自动测试、发布、部署等

新哥依旧灿烂 7585

关于112G和56G PAM4信号的有效回损(ERL)

本文探讨了回波损耗(RL)对高速数字通信系统性能的影响,重点分析了时域信道运行裕度(COM)与频域回波损耗指标的关联性。研究表明,传统频域回波损耗指标在预测系统性能时存在假阳性/假阴性问题,特别是对PAM-4信号系统影响更为显著。通过引入基于时域脉冲响应的有效回波损耗(ERL)指标,并结合判决反馈均衡器(DFE)的补偿效应,可更准确评估系统性能。实验表明,短封装器件虽然频域回波损耗较差,但在实际系统中表现更优。研究提出通过时域门控加权等方法优化ERL计算,为高速互连设计提供了更可靠的性能评估框架。

小孟同学的博客 292

道路施工检测 (construction) - 基于Mapillary Vistas数据集的YOLOv11目标检测及UI界面实现

目标检测是计算机视觉的重要任务,目标是识别图像中的目标物体类别及其位置(用边界框表示)。两阶段检测器:如Faster R-CNN,准确度高但速度较慢单阶段检测器:如YOLO系列、SSD,速度快且精度相对较好,适合实时场景数据量:约25,000张高分辨率街景图标注类型:语义分割、实例分割、多类别检测类别示例:construction, road, car, person, traffic sign等格式:COCO风格JSON标注。

YOLO 496

Gradle仓库配置

Gradle仓库配置 支持的类型有如下几种: 类型 说明 Maven central repository 这是Maven的中央仓库,无需配置,直接声明就可以使用。但不支持https协议访问 Maven JCenter repository JCenter中央仓库,实际也是是用的maven搭建的,但相比Maven仓库更友好,通过CDN分发,并且支持https访问。 Maven local repository Maven本地的仓库,可以通过本地配置文件进行配置 M

zzy7075的专栏 2761

【系统架构设计师】论文:论虚拟现实技术的应用与发展

虚拟现实技术是当前科学研究的热点,同时也是国家大力支持发展的核心技术之一。所谓虚拟现实,就是通过计算机等虚拟手段来构造一个非常接近真实世界的虚拟环境,它主要体现在视觉、触觉、嗅觉等方面的逼真模拟来达到高度的沉浸性,也就是如我们通常所说的“身临其境”。

数据知道的博客 1万+

Apache Ivy-2.调整默认设置

Apache Ivy

weixin_42051619的博客 894

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Ivy Settings

Adjusting default settings Ivy comes bundled with some default settings which makes it pretty simple to use in a typical environment. This tutorial, which is close to a reference document, explains

My testing 1185

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

理解Gradle各种仓库

对于一个构建工具,仓库配置真的太重要了,Gradle非常灵活,可以处理远程仓库、本地仓库、可以读取本地目录、本地文件,甚至可以读取Maven仓库和ivy仓库(Groovy的Grapes中的Grab就使用的是ivy的仓库模式)。真是因为Gradle的灵活,导致一个仓库问题也比较复杂,很多时候我们只是能用就没有关心,但是遇到问题可能就只能干瞪眼了。本文就介绍一下Gradle的仓库体系。

trayvontang的博客 772

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

java ivy教程_ivy教程(8)-使用ivy模块配置

Buildfile:src\example\configurations\multi-projects\filter-framework\build.xmlclean:resolve:[ivy:retrieve]::Ivy2.0.0-beta1-local-20071105200109-20071105200109::http://ant.apache.org/ivy/::[iv...

weixin_39566864的博客 392

WheelPicker集成与部署:Gradle、Maven、Ivy完整教程

WheelPicker是一款为Android应用提供真实滚动效果的选择器组件,能够帮助开发者快速实现日期选择、地区选择等功能。本教程将详细介绍如何通过Gradle、Maven和Ivy三种主流构建工具将WheelPicker集成到你的Android项目中,让你轻松拥有流畅的滚轮选择体验。 [![WheelPicker组件 banner图](https://raw.gitcode.com/gh_mi

gitblog_01154的博客 1076

ivy的配置

摘自:http://ivy.group.iteye.com/group/wiki/1946-ivy-tutorials-adjusting-default-settings   注意ivy本地仓库默认的是:userhome/ivy2         ivy绑定一些默认设置,这使得在通常环境下使用ivy很容易。这个教程,接近于参考文档,解释这些默认设置是什么和他们怎样调整来满足你的需要。

rains_xy的专栏 1329

sbt更改默认ivy仓库位置

转自: http://www.ituring.com.cn/article/132055 文档上有写: http://www.scala-sbt.org/0.13/docs/Launcher-Configuration.html 一开始以为是要配置conf下的文件 sbt/0.13/conf/sbtopts # Path to local Ivy repository

cloudeagle_bupt的专栏 1万+
上一篇: RegexBuilder: A DSL for creating regular expression, Request For Comment
下一篇: CruiseControl 的 108 种调度模式
platformlib
博客等级 码龄22年 1粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值