- 浏览: 119419 次
- 来自: ...
文章分类
最新评论
基本上, 搭建一个本地的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一视同仁. 参考最开始的例子. 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">如何使用这个仓库
Ivy 如何解决我们的问题
发表评论
-
The Object Primer
2004-12-11 11:21 5951,书名 被翻译成“ ... -
错误处理规范
2004-12-11 16:47 761错误处理规范 〇、概念澄清 概念 解释 错误 ... -
Java,误解为何如此之深
2005-08-24 13:50 596前几天被电话面试,问J ... -
Java:画蛇添足的编码规范
2005-09-02 13:13 624前几天公司培训编码规范: 第n条: ... -
synchronized : 规则, 推论与实践
2007-07-23 22:32 47314.3.Synchronization. Rule ... -
交互设计: 股市帮凶
2008-05-04 21:30 649同事 Y 在线操作股票时, 把"买入"点成 ... -
交互设计: 火车上的厕所
2008-05-26 17:17 614有人在动车组的厕所前等了很久, 直到乘务员路过说厕所是被锁住了 ... -
设计原则与模式: 案例介绍--CppUnit
2008-06-01 20:15 635设计原则与模式: 案例介绍--CppUnit CppUnit ... -
工作流:形参,实参,相关数据
2004-12-11 11:40 678关于形参,实参,相关数据 一、形参(FormalParame ... -
工作流:第一次发版,过程总结
2004-12-11 11:42 714交流 即时讨论:小组成员咫尺之遥,有问题立即提出并解决 ... -
工作流:第一次发版,设计总结
2004-12-11 11:43 614整体 面向接口:消息系统,持久系统等,其实现都是可替换 ... -
Beyond Workflow : An Introduction to Vitria BusinessWare
2005-09-26 10:13 807一、简介 Busines ... -
Vitria BusinessWare: 存储与访问安全
2006-03-26 15:45 755事实上,BusinessWare使用LDAP做为存储机制和 ... -
Vitria BusinessWare: 平台与软件总线
2006-04-01 12:59 853经过一段时间的使用 ... -
Vitria BusinessWare: Web Services
2006-04-01 14:30 744BusinessWare的Web Services ... -
Web Services:自洽,编码,交换模型
2006-04-01 16:02 6891, 自洽 以前曾经写过: 目前WebServi ... -
Web Services:WSDL 1.1 规范中的几个错误
2006-04-01 16:40 730读完了WSDL 1.1的规范,令人惊讶的是发现似乎例子中有几个 ... -
C++/CLI:被忽视的集成技术
2006-05-17 20:02 762十几行代码,就使一个重要的旧系统组件,完全融入了基于.Ne ... -
AJP/JK:异构Web平台的集成技术
2006-05-25 21:44 713Tomcat Connector 可以将Tomcat ... -
Vitria BusinessWare: 事件与端口
2006-05-27 17:24 677Event BusinessWare是一个事件驱动的系统 ...
相关推荐
2. `local`: 本地仓库,存放项目特有的或未发布的依赖。 3. `conf`: 可能包含SBT的配置文件,如`ivysettings.xml`,定义了仓库的位置和策略。 4. `log`: 存储构建过程中产生的日志信息。 总的来说,这个压缩包是...
为了搭建内网 Maven 私服,需要下载和安装 Nexus 仓库管理工具,Nexus 是一个功能强大且灵活的仓库管理工具,支持 Maven、Gradle 和 Ivy 等构建工具。下面是搭建内网 Maven 私服的步骤: 1. 下载 Nexus 首先,需要...
Ivy2 在这里的作用是管理项目依赖,它可以从 Maven 中央仓库或其他指定的仓库下载所需的库,并将其组织到本地缓存中,供 SBT 在构建过程中使用。 标签中的“SBT”是 Scala Build Tool 的缩写,它是 Scala 开发者...
Nexus是Sonatype公司开发的一款强大的仓库管理器,它在Java和Maven社区中被广泛用作私有Maven仓库,用于托管内部项目构件、...同时,Nexus也可以作为其他工具(如Gradle、Ivy等)的仓库,实现多语言项目的统一管理。
《Nexus 2.11:打造你的Maven本地仓库》 Nexus是Sonatype公司推出的一款强大的软件仓库管理工具,特别适用于Java开发者,尤其是使用Maven构建项目的团队。Nexus 2.11版是其中的一个重要版本,它不仅提供了全面的...
Maven私服,即本地搭建的Maven仓库服务器,主要功能是存储和管理项目依赖。在企业开发中,由于一些内部库或特定版本的库不便公开,或者为了提高依赖下载速度,就需要使用Maven私服。Nexus作为Maven私服,能够集中...
"nexus-2.11.1 bundle"是一个包含Nexus 2.11.1-01版本的完整包,适用于需要搭建本地Maven私服的用户。 Nexus的主要功能包括: 1. **代理仓库**:Nexus可以作为远程仓库的代理,将常用的第三方库缓存到本地,减少...
标题中的 "gradle-6.9.1-bin.zip" 指的是Gradle 6.9.1版本的二进制发行版的压缩包,该版本是2021年前后发布的一个稳定版本,适用于开发者快速地在本地环境中搭建Gradle。 **Gradle核心概念与特点** 1. **基于...
- **过程:** 使用Eclipse通过Subclipse插件从SVN仓库检出Nutch 1.7的代码,需要指定正确的URL地址。 - **项目创建:** 创建Java项目,并命名,这里建议命名为“nutch1.7”。 **2. 文件编码与环境变量设置** - **编码...
描述中提到“私服搭建需要”,意味着这个压缩包是为搭建本地或内部网络的 Nexus 服务器准备的,避免了从外部网络艰难下载的问题。将文件上传到 CSDN(China Software Developer Network)是为了方便其他用户获取和...
这些zip文件通常包含了Gradle运行所需的全部组件,包括JAR文件、文档、示例代码等,方便开发者在本地环境快速搭建和使用Gradle。 **Gradle核心概念:** 1. **构建脚本**:Gradle使用Groovy或Kotlin编写构建脚本,...
Gradle的依赖管理功能强大,能自动解决项目之间的依赖关系,并从Maven仓库或Ivy仓库下载所需库。 此外,Gradle还支持插件系统,有丰富的官方和第三方插件,如Spring Boot插件、Android插件等,可以极大地简化特定...
Maven会自动从中央仓库或其他指定的远程仓库下载这些依赖,并将它们放入本地仓库。这使得共享和复用代码变得简单,因为每个项目只需要关注自身的直接依赖,而无需关心间接依赖的具体版本。 Maven的生命周期包括清理...
在Gradle 5.6.4中,你可以方便地声明项目间的依赖关系,Gradle会自动解决这些依赖并下载到本地仓库。它支持Maven和 Ivy仓库,也可以自定义私有仓库。此外,Gradle的缓存机制可以重用已下载的库,减少构建时间。 3....
这个压缩包包含了运行Gradle所需的全部文件,使得开发者无需编译源代码就能在本地环境中快速搭建和使用Gradle。 在描述中提到的“load”可能指的是加载或者安装Gradle到开发环境中。下面是关于Gradle 2.8的详细知识...
该文件定义了Maven的全局设置,如本地仓库路径、远程仓库配置、代理服务器等。 4. **lib** 目录:存储了Maven运行所需的所有依赖库,包括Apache Ivy、plexus组件和其他必要的JAR文件。 5. **LICENSE** 和 **NOTICE...
5. **缓存和仓库**:Gradle 支持远程和本地Maven或 Ivy仓库,可以缓存依赖以减少网络请求。 对于开发者来说,选择合适的Gradle版本很重要。通常,你应该使用与项目所依赖的库和框架兼容的最新稳定版本。同时,定期...
1. **依赖管理**:Gradle的依赖管理系统能够自动处理项目的依赖关系,可以从Maven仓库、 Ivy仓库或其他定制的仓库拉取所需的库。在离线模式下,有了"gradle-2.6-all.zip",开发者可以避免因网络问题而无法获取依赖的...
2. `mavenLocal()`方法用于指定使用Maven本地仓库,通常在Maven的setting.xml中指定本地仓库位置。 3. `maven{url "***"}`等方法用于添加特定的远程仓库URL,例如使用阿里云镜像加速下载。 4. `mavenCentral()`方法...
4. **依赖管理**:Gradle内置了强大的依赖管理功能,基于Apache Ivy,支持Maven和Ivy仓库结构。 5. **支持现有构建工具**:Gradle能够无缝集成Ant任务和构建脚本,使其成为构建过程的一部分。 6. **Groovy构建脚本**...