- 浏览: 581587 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (188)
- java (14)
- web (14)
- web service (3)
- 杂谈 (14)
- Version Control (13)
- software test (30)
- linux (17)
- database (3)
- distributed storage and computing (1)
- ejb (7)
- project building (46)
- spring & IOC (2)
- Thread (2)
- xml (2)
- tool software (0)
- [网站分类]1.网站首页原创Java技术区(对首页文章的要求: 原创、高质量、经过认真思考并精心写作。BlogJava管理团队会对首页的文章进行管理。) (0)
- project manager (9)
- OSGI (1)
- nosql (3)
最新评论
-
sp42:
好搞笑
你懂不懂xml! (2) -
cherishmmo2004:
感觉你们都很牛掰,我们做的一个运维平台也是用karaf的,用k ...
基于osgi开发大型的企业应用 -
liubey:
“自作聪明”的使用了读写锁,其实只使用ReentrantLoc ...
编码最佳实践(4)--小心LinkedHashMap的get()方法 -
liubey:
你这个代码是sublist后仍然一直持有这个sub的引用,一般 ...
编码最佳实践(5)--小心!这只是冰山一角 -
xiegqooo:
初学maven(5)-使用assembly plugin实现自定义打包
在这个例子中,我们将看到使用ivy的一个最简单的方式。不使用任何特殊设置,ivy将使用maven2 仓库来解析你在ivy文件中声明的依赖。让我们来看一眼涉及到的文件的内容。
你将在ivy发行包的src/example/hello-ivy 目录下找到这个教程的源文件。
1) ivy.xml 文件
这个文件用于描述项目对其他类库的依赖。
这里是例子
< info organisation ="apache" module ="hello-ivy" />
< dependencies >
< dependency org ="commons-lang" name ="commons-lang" rev ="2.0" />
< dependency org ="commons-cli" name ="commons-cli" rev ="1.0" />
</ dependencies >
</ ivy-module >
这个文件的格式非常容易理解,但是让我们给出一些关于这里声明的东西的细节。首先,根元素ivy-module,version属性用于告诉ivy这个文件使用的ivy的版本。
然后是info标签,用于给出和这个我们正在定义依赖的模块有关的信息。这里只定义了组织和模块名,你可以自由选择任何你想要的组织和模块名,但是我们建议不要带空格。
最后,dependencies 部分让你定义依赖。这里这个模块依赖两个类库:commons-lang 和 commons-cli。如你所看到的,我们使用org和name属性来定义我们需要的依赖的组织和模块名。rev属性用于明确说明你依赖的模块的修订版本。
为了知道如何填写这些属性,你需要知道你依赖的类库的准确信息。ivy默认使用maven2 仓库。我们推荐你使用mvnrepository.com 来查找你需要的模块。一旦你找到它,你将得到如何在一个maven POM中声明依赖的细节。例如:
< groupId > commons-lang </ groupId >
< artifactId > commons-lang </ artifactId >
< version > 2.0 </ version >
</ dependency >
为了将这些信息转换为ivy依赖声明,你所需要做的只是使用groupId 作为组织,artifactId作为模块名。这是我们在这个教程中为依赖做的,commons-lang 和 commons-cli。注意使用commons-lang 和 commons-cli 作为组织不是组织应该是什么的最好的例子。更好的方式是使用org.apache, org.apache.commons 或 org.apache.commons.lang. 然而,这是在maven2仓库中如何标识这些模块的方法,因此获得他们的最简单的方式是照原来的样子使用细节(你将会看到在构建一个仓库
时,你可以使用命名空间来重新定义这些名称,如果你想让某些东西更加清晰)。
如果你想得到在ivy文件中可以做什么的更多细节,你可以看一下ivy文件的参考文档。
2) build.xml 文件
对应的build文件包含一个target集合,容许解析在ivy文件中声明的依赖,编译并运行示例代码,生成依赖解析报告,并清理项目的缓存。
你可以使用标准的"ant -p" 来获取可用的target列表。可以随意看一下整个文件,这里是和依赖解析有关的部分:
...
<!-- =================================
target: resolve
================================= -->
< target name ="resolve" description ="--> retrieve dependencies with ivy" >
< ivy:retrieve />
</ target >
</ project >
如你所见,调用ivy来解析和获取依赖是非常简单的:如果ivy安装正确,你所需要做的只是在你的ant文件中定义一个xml的命名空间(xmlns:ivy="antlib:org.apache.ivy.ant")。然后在这里命名空间中所有的ivy ant 任务都可用。
这里我们只使用了一个任务:retrieve 任务。没有任何属性,它将使用默认设置并查找名为ivy.xml的文件来获取依赖定义。这正是我们想要的,因此我们不需要做其他。
注意,在这案例中我们定义了一个"resolve" target 并调用了retrieve 任务。这听起来有点令人困惑,实际上retrieve任务会执行一次resolve(解析依赖并下载他们到本地缓存),然后再执行一次retrieve。查看How does it work ?
页面来得到关于这个的更多细节。
3) 运行项目
好,现在我们看到文件已经解析好了,让我们运行这个实例来看会发生什么。打开一个shell(或者命令行)窗口,并进入hello-ivy 实例目录。然后,在命令提示符下,运行"ant":
Buildfile: src\example\hello-ivy\build.xml
resolve:
[ivy:retrieve] :: Ivy 2.0.0-beta1-local-20071104204849 - 20071104204849 :: http://ant.apache.org/ivy/ ::
[ivy:retrieve] No ivy:settings found for the default reference 'ivy.instance'. A default instance will be used
[ivy:retrieve] no settings file found, using default ....
[ivy:retrieve] :: loading settings :: url = jar:file:/c:/dev/data/opensource_workspace/ivy/build/artifact/ivy-core.jar!/org/apache/ivy/core/settings/ivysettings.xml
[ivy:retrieve] :: resolving dependencies :: [ org.apache | hello-ivy | working@BEN-ScokartG ]
[ivy:retrieve] confs: [default]
[ivy:retrieve] found [ commons-lang | commons-lang | 2.0 ] in public
[ivy:retrieve] found [ commons-cli | commons-cli | 1.0 ] in public
[ivy:retrieve] found [ commons-logging | commons-logging | 1.0 ] in public
[ivy:retrieve] downloading http://repo1.maven.org/maven2/commons-lang/commons-lang/2.0/commons-lang-2.0.jar ....
[ivy:retrieve] .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....
[ivy:retrieve] .... .... .... .... .... .... .... .... .... .... .... .... (165kB)
[ivy:retrieve] .. (0kB)
[ivy:retrieve] [SUCCESSFUL ] [ commons-lang | commons-lang | 2.0 ]/commons-lang.jar[jar] (3335ms)
[ivy:retrieve] downloading http://repo1.maven.org/maven2/commons-cli/commons-cli/1.0/commons-cli-1.0.jar ....
[ivy:retrieve] .... .... .... .... .... .... .... .... .... (29kB)
[ivy:retrieve] .. (0kB)
[ivy:retrieve] [SUCCESSFUL ] [ commons-cli | commons-cli | 1.0 ]/commons-cli.jar[jar] (2053ms)
[ivy:retrieve] downloading http://repo1.maven.org/maven2/commons-logging/commons-logging/1.0/commons-logging-1.0.jar ....
[ivy:retrieve] .......... (21kB)
[ivy:retrieve] .. (0kB)
[ivy:retrieve] [SUCCESSFUL ] [ commons-logging | commons-logging | 1.0 ]/commons-logging.jar[jar] (1933ms)
[ivy:retrieve] :: resolution report ::
[ivy:retrieve] :: evicted modules:
[ivy:retrieve] [ commons-lang | commons-lang | 1.0 ] by [[ commons-lang | commons-lang | 2.0 ]] in [default]
---------------------------------------------------------------------
| | modules || artifacts |
| conf | number| search|dwnlded|evicted|| number|dwnlded|
---------------------------------------------------------------------
| default | 4 | 3 | 0 | 1 || 3 | 3 |
---------------------------------------------------------------------
[ivy:retrieve] :: retrieving :: [ org.apache | hello-ivy ]
[ivy:retrieve] confs: [default]
[ivy:retrieve] 3 artifacts copied, 0 already retrieved
run:
[java] standard message : hello ivy !
[java] capitalized by org.apache.commons.lang.WordUtils : Hello Ivy !
BUILD SUCCESSFUL
Total time: 14 seconds
4) 发生了什么?
在没有任何设置的情况下,ivy从maven2 仓库中获取文件。这就是这里发生的事情。
resolve任务在maven2 仓库中发现commons-lang 和 commons-cli 模块,识别commons-cli 依赖于commons-logging并作为间接依赖解析它。然后ivy下载所有对应的制品到它的缓存中(默认在你的user home下的.ivy2/cache 目录)。
最后,retrieve任务将这些解析好的jar包从ivy缓存复制到项目默认的lib目录(你可以简单地通过设置retrieve任务的pattern属性来改变).
你可能会发现这个任务仅仅为输出一个"Hello Ivy !"信息就花费了很长的时间。但是记住大量的时间用在从网络下载需要的文件。让我们再次运行它:
Buildfile: src\example\hello-ivy\build.xml
resolve:
[ivy:retrieve] :: Ivy 2.0.0-beta1-local-20071104204849 - 20071104204849 :: http://ant.apache.org/ivy/ ::
[ivy:retrieve] No ivy:settings found for the default reference 'ivy.instance'. A default instance will be used
[ivy:retrieve] no settings file found, using default...
[ivy:retrieve] :: loading settings :: url = jar:file:/c:/dev/data/opensource_workspace/ivy/build/artifact/ivy-core.jar!/org/apache/ivy/core/settings/ivysettings.xml
[ivy:retrieve] :: resolving dependencies :: [ org.apache | hello-ivy | working@BEN-ScokartG ]
[ivy:retrieve] confs: [default]
[ivy:retrieve] found [ commons-lang | commons-lang | 2.0 ] in public
[ivy:retrieve] found [ commons-cli | commons-cli | 1.0 ] in public
[ivy:retrieve] found [ commons-logging | commons-logging | 1.0 ] in public
[ivy:retrieve] :: resolution report ::
[ivy:retrieve] :: evicted modules:
[ivy:retrieve] [ commons-lang | commons-lang | 1.0 ] by [[ commons-lang | commons-lang | 2.0 ]] in [default]
---------------------------------------------------------------------
| | modules || artifacts |
| conf | number| search|dwnlded|evicted|| number|dwnlded|
---------------------------------------------------------------------
| default | 4 | 0 | 0 | 1 || 3 | 0 |
---------------------------------------------------------------------
[ivy:retrieve] :: retrieving :: [ org.apache | hello-ivy ]
[ivy:retrieve] confs: [default]
[ivy:retrieve] 0 artifacts copied, 3 already retrieved
run:
[java] standard message : hello ivy !
[java] capitalized by org.apache.commons.lang.WordUtils : Hello Ivy !
BUILD SUCCESSFUL
Total time: 3 seconds
太好了!缓存被使用,不再需要下载,构建只在瞬间。
现在,如果你想生成一个泥的模块的所有依赖的详细报告,你可以调用report target,并查看在build目录中的生成文件。你将得到一些类似这样的东西。
如你所见,使用ivy来解析存储在maven2 仓库中的依赖是非常容易的。现在你可以继续下一个教程来学习更多的关于如何使用模块配置
的内容,这是一个非常强大的ivy特殊特性。其他教程也可用,你将学习到如何使用ivy设置来建造一个可能非常复杂的企业仓库。现在也是开始阅读参考文档
的好时机,尤其是介绍题材可以很好的给出ivy概况。对于开始考虑如何使用ant + ivy来构建一个干净而健壮的构建系统来说,最佳实践页面
是必须阅读的。
发表评论
-
搜索maven依赖的网站推荐
2011-12-02 16:04 4304使用maven填写依赖的时候,常会遇到需要查一下gro ... -
hudson中subversion HEAD check out 的问题及疑惑
2010-09-30 10:56 40近期发现一个问题,hudson执行任务时,经常不能获取 ... -
你走你的阳光道,我走我的独木桥:整合ant ivy 和testng
2010-05-31 16:11 2069近期自己折腾自己,放着正统的maven + jun ... -
slf4j1.6.0-RC0和logback的0.9.20版本不兼容
2010-04-26 08:54 3508今天,尝试使用slf4j + logback的黄金组合,结果发 ... -
fisheye2.2.1 & Crucible 2.2.1 安装配置笔记
2010-04-27 16:48 31771) 下载 从atlassian网站 ... -
让ivy支持maven的classifier属性
2009-10-15 01:56 3179在maven中,对于一个依赖,除了groupId,ar ... -
ivy教程(1)-目录
2009-09-21 23:57 2939学习的最佳方式是实践!这是ivy教程将帮助你做到的 ... -
ivy教程(3)-调整默认设置
2009-09-24 20:58 2344ivy绑定一些默认 ... -
ivy教程(4)-多解析器
2009-09-25 15:28 1789这个例子演示模块是如何被多解析器获得的。使用多解析 ... -
ivy教程(5)-双重解析器
2009-09-27 20:58 1709在一些情况下,会发生这样的事情:你的模块描述符(ivy ... -
ivy教程(6)-项目依赖
2009-09-29 23:32 2998这个示例将举例说明在两个项目之间的依赖。 depen ... -
ivy教程(7)-在多项目环境下使用ivy
2009-10-03 11:48 2361在上一个教程中,你已 ... -
ivy教程(8)-使用ivy模块配置
2009-10-04 10:15 2658这个教程介绍ivy文件中的模块配置的使用。ivy模块配置事实上 ... -
ivy教程(9)-架设仓库(1)-介绍
2009-10-04 13:42 1846install任务让你从一个仓库复制一个模块或者模 ... -
ivy教程(10)-架设仓库(2)-基础仓库复制
2009-10-04 15:04 3049在这个步骤中我们使用install任务来从mave ... -
ivy教程(11)-架设仓库(3)-使用命名空间
2009-10-09 21:04 2250现在你已经看到从一个已经存在的仓库创建你自己的仓库是如何的简单 ... -
ivy教程(12)-更多例子
2009-10-09 21:29 1815如果你已经成功的跟随并理解了所有的教程,可能你还是需要得到更好 ... -
ivy中文参考文档(21)-ant任务(9)-post resolve tasks
2009-09-15 14:17 14631) post resolve tasks ... -
ivy中文参考文档(20)-ant任务(8)-cachefileset
2009-09-03 23:11 13881) cachefileset 为配置构建一个有iv ... -
ivy中文参考文档(18)-ant任务(6)-deliver
2009-08-31 22:22 14581) deliver 交付当前模块的解析好的描述符, ...
相关推荐
通过学习这些教程,用户能够快速掌握插件的使用方法,理解各种参数的意义,从而更好地利用插件进行创作。 总的来说,Ivy Grower插件为C4D用户带来了强大的常春藤生长模拟功能,结合其丰富的自定义选项和直观的用户...
7. **教程和指南**:Ivy的素材库也可能包括教程文档或视频,指导用户如何使用特定的工具、软件或技术,有助于学习和提升技能。 8. **许可和版权**:使用任何素材时,了解其许可条件非常重要。素材包通常会包含关于...
2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance Alliance Alliance Alliance 什么是开放手机联盟? 开放手机联盟, Open Handset Alliance :是美国 Google 公司与 2007 年 ...
标题中的"angular-ivy-tyqwyw:用StackBlitz:high_voltage:创建"表明这是一个关于Angular Ivy项目,可能是一个教程或者示例代码库,使用了StackBlitz在线开发环境。StackBlitz是一个云端集成开发环境(IDE),支持...
**2. Spring 框架简介** - **2.1 依赖注入与控制反转** - **定义**: 依赖注入(Dependency Injection, DI)是一种软件设计模式,其中对象依赖于外部实体创建并传递给它们。控制反转(Inversion of Control, IoC)...
2. **依赖管理**:Nutch采用Ivy进行依赖管理,从1.2版本开始。Ivy是一种灵活且强大的依赖管理系统,能够帮助开发者管理项目所需的库和模块。 3. **源代码管理**:Nutch使用Subversion (SVN) 进行源代码管理。SVN是一...
Struts2是一个强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发中。...通过对这个例子的分析和实践,开发者可以快速掌握Struts2框架的使用,为进一步学习和应用Struts2打下坚实基础。
- **Ivy依赖管理**:对于使用Apache Ivy作为构建工具的项目,Spring同样提供了依赖管理支持。 **5. 日志记录** - **使用Log4j**:Spring支持多种日志框架,其中Log4j是一种常用的日志解决方案。 - **避免使用...
通过对这些脚本的理解,可以帮助新手快速上手Nutch项目。 #### 七、Nutch的配置与定制 - **配置**:要深入了解Nutch的配置细节,可以通过研究`nutch-default.xml`文件中的各项配置选项。这个文件包含了Nutch的默认...
标签是对内容的简要概括,再次强调了资源的主题是关于ANT的教程和Word文档,方便用户快速识别和查找相关内容。 【压缩包子文件的文件名称列表】:ANT详细教程加world文档 这表明压缩包内只有一个文件,即“ANT详细...
本教程将深入探讨Ant的环境配置、文件编写、使用技巧以及开发实例,让学习者能够快速掌握这一强大的自动化构建工具。 一、Ant环境配置 在开始Ant的学习之前,首先需要在本地环境中安装Java运行环境(JRE)和Java...
1. **准备工作**:在开始之前,请确保断开所有电源连接,并移除电池。准备必要的工具,如螺丝刀、防静电手环等。 2. **底壳拆卸**:首先,翻转笔记本,移除底部的所有螺丝。然后,用塑料撬棒小心地沿着边缘分离...
- **Ivy Dependency Management**:Ivy是一个Apache项目的依赖管理系统,Spring同样支持使用Ivy来管理项目依赖。 #### Logging 日志记录对于任何应用程序来说都是非常重要的。Spring框架支持多种日志记录框架,如...
对于其他构建工具,如 Gradle 或 Ivy,也有相应的配置方式。确保选择与项目所用 Java 版本相匹配的 Lucene 版本。 **创建索引** 1. **文档模型**:在 Lucene 中,文档是信息的基本单位,可以包含多个字段(Field)...
- **教程与示例**:网上有许多教程和示例代码可以帮助你快速上手,例如通过构建简单的Java项目来实践Gradle的用法。 - **社区支持**:Stack Overflow 和 Gradle 论坛是获取帮助和解决问题的好去处,社区成员活跃且...
Gradle教程 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。Gradle能够完成构建、测试、发布和其他诸如软件打包、生成...
综上所述,"基于eclipse的struts2.x+hibernate3.x+spring3.x整合文档及实例源码"提供了一个完整的SSH整合教程,通过下载的源码和文档,开发者可以学习并实践SSH的集成,了解每个框架在实际项目中的作用和它们协同...
Xfire是Apache CXF项目的一部分,它提供了一个简洁的API来快速开发SOAP Web服务。Xfire支持WS-I Basic Profile,确保了与各种平台和语言的互操作性。它还包含了对JAXB、JAX-RPC、JAX-WS等标准的支持,使得开发者...
- **10 分钟教程**:使用 jBPM 控制台的快速入门教程。 - **集成 Eclipse 和 Web 工具**:设置 Eclipse 和 Web 工具之间的集成。 ##### 3.4 使用自定义数据库 如果需要使用非默认数据库,需要进行额外的配置。 - ...