- 浏览: 1017277 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (826)
- 硬件 (8)
- 软件 (24)
- 软件工程 (34)
- JAVA (229)
- C/C++/C# (77)
- JavaScript (8)
- PHP (1)
- Ruby (3)
- MySQL (14)
- 数据库 (19)
- 心情记事 (12)
- 团队管理 (19)
- Hadoop (1)
- spring (22)
- mybatis(ibatis) (7)
- tomcat (16)
- velocity (0)
- 系统架构 (6)
- JMX (8)
- proxool (1)
- 开发工具 (16)
- python (10)
- JVM (27)
- servlet (5)
- JMS (26)
- ant (2)
- 设计模式 (5)
- 智力题 (2)
- 面试题收集 (1)
- 孙子兵法 (16)
- 测试 (1)
- 数据结构 (7)
- 算法 (22)
- Android (11)
- 汽车驾驶 (1)
- lucene (1)
- memcache (12)
- 技术架构 (7)
- OTP-Erlang (7)
- memcached (17)
- redis (20)
- 浏览器插件 (3)
- sqlite (3)
- Heritrix (9)
- Java线程 (1)
- scala (0)
- Mina (6)
- 汇编 (2)
- Netty (15)
- libevent (0)
- CentOS (12)
- mongod (5)
- mac os (0)
最新评论
-
kingasdfg:
你这里面存在一个错误添加多个任务 应该是这样的 /** * ...
Quartz的任务的临时启动和暂停和恢复【转】 -
kyzeng:
纠正一个错误,long型对应的符号是J,不是L。
Jni中C++和Java的参数传递 -
zhaohaolin:
抱歉,兄弟,只是留下作记录,方便学习,如果觉得资料不好,可以到 ...
netty的个人使用心得【转】 -
cccoooccooco:
谢谢!自己一直以为虚机得使用网线才可以与主机连接呢。。
主机网卡无网线连接与虚拟机通信 -
yuqilin001:
要转别人的东西,请转清楚点嘛,少了这么多类,误人子弟
netty的个人使用心得【转】
Apache Ivy是一个管理项目依赖的工具。
它与Maven
Apache Maven 构建管理和项目管理工具已经吸引了 Java 开发人员的注意。Maven 引入了 JAR
文件公共存储库的概念,可通过公开的 Web 服务器访问(称为 ibiblio)。Maven 的方法减少了 JAR
文件膨胀的情况,不会占用大多数版本控制存储库。但使用 Maven 时,它会鼓励您采用其 “惯例优于配置”
的方法来构建软件,这会制约您定制构建脚本的灵活性。
但问题是Maven过于Heavy,而大部分已有的项目都用Ant做build,所以Ivy是更加合适的选择。
Ivy 提供了最一致、可重复、易于维护的方法,来管理项目的所有构建依赖项。
用Ivy进行项目管理
开始使用 Ivy 非常简单,只需创建两个 Ivy 特有的文件,添加一些 Ant 目标即可。Ivy 特有的文件是 ivy.xml 和一个 Ivy 设置文件。ivy.xml 文件中列举了项目的所有依赖项。ivysettings.xml 文件(可以随意为此文件命名)用于配置从中下载有依赖关系的 JAR 文件的存储库。
Ivy的安装
Ivy依赖于Ant,所以需要先安装Ant,然后下载Ivy,将他的jar文件考到Ant的lib下面,就可以在Ant里使用Ivy进行依赖管理了。
下载ivy 2.0
http://ant.apache.org/ivy/download.cgi
校内镜像:http://labs.xiaonei.com/apache-mirror/ant/ivy/2.0.0/apache-ivy-2.0.0-bin-with-deps.zip
下载好后安装它,把它解压到f:/ivy-2.0.0(把此目录认为是IVY_HOME),把IVY_HOME/ivy-2.0.0.jar放到 ANT_HOME/lib目录下。然后命令行入到IVY_HOME/src/example/hello-ivy目录,运行ant。然后它会下载依赖的所 有jar包。
看下hello-ivy的依赖配置:
1. <ivy-module version="2.0">
2. <info organisation="org.apache" module="hello-ivy"/>
3. <dependencies>
4. <dependency org="commons-lang" name="commons-lang" rev="2.0"/>
5. <dependency org="commons-cli" name="commons-cli" rev="1.0"/>
6. </dependencies>
7. </ivy-module>
依赖commons-lang-2.0.jar 和 commons-cli-1.0.jar,ivy会自动下载,当然还有这些*.jar所依赖的jar, 如这里的commons-cli-1.0.jar依赖commons-logging-1.0.jar,不用在ivy.xml文件定义。它们已经在lib 目录下了。
然后你再一次运行ant,ivy不会再下载这些jar,因为本地有缓存了。
当然也可以用ant report任务,输出jar依赖报告,默认在build目录,org.apache-hello-ivy-default.html。
延伸:默认缓存目录为${user.home}/cache。你也可以改它的默认目录在运行ant时,设置,如ivy.default.ivy.user.dir=f:/ivy2,所以它会缓存到f:/ivy2/cache
使用Ivy
ivy.xml
在 ivy 中,配置(conf)是比较重要的概念,它对应一组依赖的jar。比较一个编译期间的conf(compile),它依赖commons-lang。运行 期间它还要依赖log4j,可以定义一个运行期配置(runtime),它扩展compile。配置是可以扩展的,依次类推,可以定义一个测试用的jar 依赖配置(test),它扩展runtime。
ivy的jar依赖配置在ivy.xml文件里定义与说明,类似:
1. <ivy-module version="1.0">
2. <info organisation="com.chenlb" module="ivy-hello"/>
3.
4. <configurations>
5. <conf name="compile" visibility="private" description="compilation only need jar" />
6. <conf name="runtime" visibility="private" extends="compile" description="for runtime need jar" />
7. <conf name="test" visibility="private" extends="runtime" description="for test" />
8. <conf name="default" visibility="public" extends="runtime" description="default jar" />
9. </configurations>
10. <dependencies>
11. <dependency org="commons-lang" name="commons-lang" rev="2.1" conf="compile->default"/>
12. <dependency org="log4j" name="log4j" rev="1.2.12" conf="runtime->default"/>
13.
14. <dependency org="junit" name="junit" rev="3.8.2" conf="test->default"/>
15. </dependencies>
16. </ivy-module>
上面定义了,compile、runtime、test、default配置(一个配置对应一个jar依赖集)。compile只依赖 commons-lang-2.1.jar;但runtime还依赖log4j-1.2.12.jar;测试用的还依赖junit-3.8.2.jar。
在Ant里使用ivy。
加ivy的xmlns。如
1. <project name="ivy-hello" default="init" xmlns:ivy="antlib:org.apache.ivy.ant">
2. <!-- ... -->
3. </project>
下载jar。
1. <target name="resolve" description="--> retreive dependencies with ivy">
2. <ivy:retrieve pattern="${ivy.lib.dir}/[conf]/[artifact]-[revision].[ext]"/>
3. </target>
ivy.lib.dir默认是当前目录下的lib。[conf]是配置名。[artifact]是jar发布的名,[revision]是版本号,[ext]是扩展名。
classpath
1. <path id="build.lib.path">
2. <fileset dir="${lib.dir}/build" />
3. </path>
4. <path id="test.lib.path">
5. <fileset dir="${lib.dir}/test" />
6. <pathelement location="${build.java.dir}" />
7. </path>
可以在编译任务用${compile.lib.path}的classpath,test的也同样。
现在可以基本运行ant 和 ivy了,运行ant resolve就可以看到ivy下载相关的jar包。
如何构建自己的Repository
Ivy的例子里已经包括了一个构建repo的例子,在build-a-ivy-repository里,主要运行build.xml就可以构建一个 简单的repo,如果你想用namespace管理一个专业的repo,可以运行ant maven2-namespace,就会在本地构建一个专业的repo。
Repo-Location/[org]/[name]/ivy-[version].xml
e.g. apache/commons-lang/
contains a jar and a definition file, ivy-[version].xml
下面我们看看ivy-[version].xml里是什么内容
<ivy-module version="1.0" xmlns:m="http://ant.apache.org/ivy/maven ">
revision="1.0"
status="release"
publication="20051124132021"
namespace="maven2">
<description homepage="">
.....
</description>
<m:maven.plugins>nullmaven-surefire-plugin null</m:maven.plugins>
<configurations>
<conf name="master" visibility="public" description="contains only the artifact published by this module itself, with no transitive dependencies"/>
.....
<publications>
<artifact name="commons-lang" type="javadoc" ext="jar" conf="javadoc" m:classifier="javadoc"/>
<dependencies>
</ivy-module>
其实他和普通的ivy.xml的格式是一样,只是用于定义jar本身的依赖,只是多了publication对提供的jar进行描述。
IVY的配置 - ivysettings.xml
ivy本身有3中repo的类型:local,shared和public的。
ivy默认的setting:在jar里org.apache.ivy.core.setting包中
<ivysettings> <settings defaultResolver="default"/> <include url="${ivy.default.settings.dir}/ivysettings-public.xml"/> <include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/> <include url="${ivy.default.settings.dir}/ivysettings-local.xml"/> <include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/> <include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/> </ivysettings> 你可以在这里将public的repo改为你自己的repo <include url="http://myserver/ivy/myivysettings-public.xml "/> myivysettings-public.xml <ivysettings> <resolvers> <filesystem name="public"> <ivy pattern="/path/to/my/public/rep/[organisation]/[module]/ivy-[revision].xml" /> <artifact pattern="/path/to/my/public/rep/[organisation]/[module]/[artifact]-[revision].[ext]" /> </filesystem> </resolvers> </ivysettings> 这样当resolve是,ivy会先从user local,然后是shared,然后会在你设置的public repo下载jar。 更多的关于Ivy的信息请查阅Apache Ivy的官方doc: http://ant.apache.org/ivy/
发表评论
-
eclipse使用SVN创建,合并分支[转]
2011-11-11 17:11 912之前一直使用"小乌龟"进行分支建立与 ... -
持续集成之“依赖管理”
2011-08-04 18:10 807来源: infoq 发布时间: 2011-0 ... -
持续集成理论和实践的新进展
2011-08-04 18:10 989作者: 肖鹏 来源: InfoQ 发布时间 ... -
Maven原理和Maven2新特性
2011-06-30 16:02 1044Maven的基本原理和Maven2的新特性 用Maven做项 ... -
结合Maven2进行J2EE项目构建
2011-06-29 21:13 1202一.背景 Maven2 的基本 ... -
用Maven做项目管理
2011-06-29 21:10 1036用 Maven 做项目管理 在 Java世界中我们 ... -
天生一对"Maven2+Jetty" -- Maven2创建并管理WebApp
2011-06-29 19:21 1299Maven2代比1代改进很多,其中主要强调的是--它不仅仅是个 ... -
Maven实战(四)——基于Maven的持续集成实践
2011-06-28 13:16 963Martin的《持续集成》 ... -
Hudson+Maven+SVN 快速搭建持续集成环境
2011-06-28 13:07 1022hudson 是一个可扩展的持续集成引擎,Hudson非常 ... -
敏捷开发、极限编程
2011-06-27 00:35 881什么是敏捷开发?一种以人为核心、迭代、循序渐进的开发方法。在敏 ... -
敏捷开发简介
2011-06-27 00:34 1199在软件工业界,敏捷开发已成为众多高效开发团队的制胜之道。它不仅 ... -
用SecureCRT连接VMware中的Linux系统
2011-06-16 22:03 1601一、预备知识: Secure: SecureCRT将S ... -
持续集成之路——Maven
2011-06-15 15:04 733写在前面 ... -
持续集成之路——Maven(续)
2011-06-15 15:02 863接上篇)在新创建了项目之后,可以看到目录结构: ... -
持续集成之路——搭建Maven私服
2011-06-15 15:01 1077在开发过程中,有时候会使用到公司内部的一些开发包,显然把这些包 ... -
Maven仓库管理-Nexus(转帖后加强版)
2011-06-15 15:00 2041前面我讲到为什么要使用Maven, Maven的安装,以及如何 ... -
maven下nexus的搭建,jar包上傳等注意事項
2011-06-15 14:58 2492nexus是用來搭建本地jar ... -
解决nexus下载maven索引的问题
2011-06-14 23:23 3173在上个周五在公司的一 ... -
Maven仓库管理-Nexus(转帖后加强版)
2011-06-14 00:50 1108前面我讲到为什么要使用Maven, Maven的安装,以及如何 ... -
Hudson+Maven+SVN 快速搭建持续集成环境
2011-06-08 01:04 852hudson 是一个可扩展的持 ...
相关推荐
通过学习和使用Apache Ivy,开发者可以更有效地管理项目依赖,提高开发效率,保证构建的一致性和可重复性。对于大型项目或者团队协作来说,Ivy是一个非常实用的工具。在实际操作中,用户需要了解如何编写`ivy.xml`...
通过这种方式,Apache Ivy与Ant结合使用,可以帮助开发者高效地管理和构建项目,特别是在大型项目中,依赖关系复杂,Ivy的作用尤为重要。它可以自动下载所需的库,减少手动管理的繁琐工作,提高开发效率。
Apache Ivy 是一个开源的依赖管理工具,主要用于Java项目,但也可以用于其他语言的项目。它设计目的是解决在大型项目中管理各种库和依赖关系的问题,使得构建过程更加简单和自动化。Ivy 可以与Apache Ant集成,提供...
Apache Ivy 是一个强大的依赖管理工具,它主要用于Java项目,但也可以用于其他语言的构建系统。Ivy 起源于 Ant,一个广泛使用的Java构建工具,它弥补了Ant在依赖管理和解决上的不足。Apache Ivy 2.0.0-beta1 是这个...
使用Apache Ivy,你可以通过声明项目依赖的方式,自动下载和管理这些依赖的jar包。Ivy支持多种仓库格式,包括Apache Maven的M2仓库,这使得它可以无缝集成到现有的Maven项目中。此外,Ivy的XML格式允许高度定制,...
该软件包中包含apache-ivy-2.5.0-rc1-bin.tar.gz部署安装包、apache-ivy-2.5.0-rc1-bin-with-deps.zip依赖包、apache-ivy-2.5.0-rc1-src.zip源码。
Apache Ivy 是一个开源的依赖管理工具,主要用于Java项目,但也可以应用于其他编程语言。它作为一个构建工具的补充,如Ant或Maven,帮助管理和解决项目的依赖关系。在"apache-ivy-2-5-0.rar"这个压缩包中,包含了...
Apache Ivy 是一个强大的依赖管理工具,它主要用于Java项目中,但它同样可以用于其他语言的构建管理。这个"apache-ivy-2.4.0-rc1-bin.zip_ivy"文件是Apache Ivy的2.4.0-rc1版本的二进制发行版,包含了运行Ivy所需的...
Apache Ivy 是一个开源的依赖管理工具,主要用于Java项目。它作为一个构建系统的一部分,可以协助管理和解决项目的依赖关系,包括JAR文件和其他外部资源。Apache Ivy 2.3.0-rc2是该软件的一个发行版本,它包含了Ivy...
Ivy是一个由Apache Ant项目维护的依赖管理工具,它允许开发者以声明式的方式管理项目所依赖的外部库,从而实现对JAR包的高效管理。这个工具的引入,显著提高了项目的可维护性和构建效率,避免了由于版本冲突或重复...
标题中的“ivy-2.4.0.jar”指的是Apache Ivy的2.4.0版本的库文件,这是一个Java应用程序,专门用于管理和解决项目依赖。Ivy是Ant的一个扩展,它帮助开发者管理项目所依赖的外部组件,如JAR文件和其他资源。 在软件...
总的来说,这个压缩包提供了一个完整的环境,使得开发团队可以在使用Apache Ant进行构建的同时,利用Apache Ivy和特定的svn resolver从SVN仓库中方便地获取和管理依赖,大大简化了项目管理和构建流程。对于那些使用...
Ivy 是一种基于 Apache Ant 的依赖管理工具,用于管理项目中的依赖项和库文件。下面是对 Ivy 学习使用文档的详细解释和知识点总结。 Ivy 基础知识 Ivy 是一个开源的依赖管理工具,基于 Apache Ant,用于管理项目中...
【IVY 压缩包】是一个用于项目依赖管理的工具,它在软件开发领域扮演着重要的角色。Ivy这个名字来源于“ivy”这个词在植物界中的攀爬特性,象征着项目依赖之间的相互关联和依赖。这个压缩包包含了Apache Ivy的核心...
Apache Ivy是用于管理(记录,跟踪,解决和报告)项目依赖项的工具。 它具有以下特点: 灵活性和可配置性Apache Ivy本质上与过程无关,并且不依赖于任何方法或结构。 相反,它提供了必要的灵活性和可配置性,以适应...
在IT行业中,Liferay是一款广泛使用...总的来说,`liferay开发需下载的.ivy`意味着在Liferay开发环境中,使用Ivy作为依赖管理工具,通过`.ivy`文件配置项目依赖,以实现自动化下载和管理,从而提升开发效率和项目质量。
IvyDE使得在Eclipse中可以直接管理Ivy依赖,包括添加、删除和更新依赖,以及同步项目构建路径,极大地方便了开发流程。 在压缩包子文件的文件名称列表中,只有一个名为“ivy”的文件,这很可能是Ivy的安装包或配置...
SBT利用Ivy库进行依赖管理,Ivy2是Apache Ivy的一个版本,它是一个强大的依赖管理系统,广泛用于Java和Scala项目中。 在Java和Scala的世界里,构建工具有如Maven、Gradle和SBT等,它们负责自动化项目的构建过程,...
然而,对于大型项目,依赖管理变得尤为重要,这就是Apache Ivy和IvyDE插件的作用所在。Ivy是一个灵活且强大的依赖管理系统,它能够帮助开发者管理和解决项目中的外部依赖。IvyDE则是Ivy在Eclipse中的集成,使得...