- 浏览: 583265 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (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实现自定义打包
maven很强大,但是远不完美,令人烦恼的地方也不少。看到Ivy似乎日渐成熟,试试看这个小东西表现如何,毕竟后面有那个强大的我喜欢的ant。
折腾了一番,整理出来点东西,分享给对ivy同样感兴趣的朋友。依然是"初学"系列,提供给新手入门使用。
一. 下载安装
从官网http://ant.apache.org/ivy/下载到最新的ivy2.0.0正式版,选择的是with dependencies的包。
在安装ivy之前,请先安装好ant1.6以上版本,因为Ivy是基于ant的。
参照官网的安装,将下载下来的ivy安装包解压,然后复制ivy的jar文件到ant的lib目录下(ANT_HOME/lib)。设置系统属性IVY_HOME到ivy的安装目录,比如G:\soft\ivy\ivy200。
另外一个简单的安装方法,就是直接到ivy的src/example/hello-ivy 目录下执行ant,会从网上下载ivy并安装的。
二. 设置工作目录
Ivy 使用"ivy.default.ivy.user.dir"作为工作目录,ivy通过以下方式确认该目录的具体路径:
1. 查找变量ivy.default.ivy.user.dir
2. 如果没有找到,查找变量ivy.home
3. 如果还没有找到,查找变量user.home,然后使用user.home/.ivy目录
默认安装而没有专门设置前,前两个变量不存在,因此ivy就会使用user.home作为默认工作目录.
Ivy 使用cache目录来存放缓存文件,ivy通过以下方式确认该目录的具体路径:
1. 查找变量ivy.cache.dir
2. 如果没有找到,使用ivy.default.ivy.user.dir/cache
默认安装而没有专门设置前,前ivy.cache.dir变量不存在,因此ivy就会使用ivy.default.ivy.user.dir/cache,由于ivy.default.ivy.user.dir在该情况下默认使用user.home,因此最后的结果就是使用user.home/cache目录.
修改默认工作路径的方法,很明显,设置上述的几个变量值即可。比如需要将ivy.default.ivy.user.dir设置到一个特定的目录而不是使用当前操作系统的user.home路径,对于ivy,可以通过设置ant属性的方式。比如修改build.xml文件,增加以下内容
<property name="ivy.default.ivy.user.dir" value="G:\soft\ivy\userdir" />
这样就将工作路径修改过去,cache目录也随之改变,避免重新安装操作系统/安装多操作系统等情况下对当前操作系统和用户的依赖。
由于build.xml文件通常都是项目文件,需要提交到cvs、subversion等版本控制系统中,因此直接在里面写路径不大适合,一旦修改需要改动所有项目的build.xml,而且不同开发人员要求路径相同,不大合理。考虑到ant是可以方便读取系统环境变量的,因此可以用环境变量来定义具体的路径,ant简单使用该环境变量:
设置环境变量env.ivy.default.ivy.user.dir=G:\soft\ivy\userdir
build.xml中这样引用:
<property environment="env"/>
<property name="ivy.default.ivy.user.dir" value="${env.ivy.default.ivy.user.dir}" />
以上目录使用规则可以直接看ivy的源代码,很清晰,类org.apache.ivy.core.settings.IvySettings中IvySettings()的构造函数很容易看出上面的规则。(惭愧,刚学ivy,对配置不熟悉,又找不到相关的配置说明文档,只好蛮干了)
三. 配置文件路径
ivy使用变量名ivy.settings.file来设置配置文件路径,由于没有找到相关的设置文档,因此干脆打开源文件看代码。
在类org.apache.ivy.ant.IvyAntSettings中,函数defineDefaultSettingFile()中有相关的代码:
1. 查找变量名ivy.settings.file
settingsFileName = variableContainer.getVariable("ivy.settings.file");
2. 可能的路径,依次是项目BaseDir(应该是ant的build.xml文件中定义的BaseDir,通常是项目根路径),当前路径,很奇怪居然不查找诸如ivy.default.ivy.user.dir的路径,甚至连ivy.settings.dir都不去查找,莫名其妙
File[] settingsLocations = new File[] {
new File(getProject().getBaseDir(), settingsFileName),
new File(getProject().getBaseDir(), "ivyconf.xml"),
new File(settingsFileName),
new File("ivyconf.xml")
};
3. 上面四个路径依次查找
for (int i = 0; i < settingsLocations.length; i++) {
file = settingsLocations[i];
verbose("searching settings file: trying " + file);
if (file.exists()) {
break;
}
}
4. 如果没有找到,则取默认设置
if (!file.exists()) {
info("no settings file found, using default...");
file = null;
url = IvySettings.getDefaultSettingsURL();
}
默认配置文件是ivy.jar包中的org.apache.ivy.core.settings.ivysettings.xml,如果不做任何相关配置,一般都使用这个默认配置。
了解ivy是怎么工作了,想配置就方便了。比如如果希望为当前项目单独设置,则可以:
1. 在当前项目BaseDir目录下放置ivyconf.xml文件
new File(getProject().getBaseDir(), "ivyconf.xml")
这个是最简单的方案了,奇怪的是这里的文件名是ivyconf.xml,很郁闷,我用ivysettings.xml测试了好久都不生效,原来根结在这个地方。风格不统一,估计是新老版本兼容问题,幸亏可以看到源代码。
2. 或者同时设置ivy.settings.file为要求的文件名,将该文件放置在项目BaseDir目录下
new File(getProject().getBaseDir(), settingsFileName)
比如设置ivy.settings.file=ivysettings.xml,这样可以和jar包中的文件名保持一致。似乎用处不大?
3. 为了让所有项目统一使用相同配置,可以考虑直接将ivy.settings.file指向一个公共的配置文件
比如设置ivy.settings.file为${env.ivy.default.ivy.user.dir}/ivysettings.xml
这样就不必每次都重复设置相同的内容,比如ivy的public repository,默认是使用maven2的官网仓库,我们可以修改为使用maven的本地私库,如nexus之类。
build.xml中的设置:
<property environment="env"/>
<property name="ivy.default.ivy.user.dir" value="${env.ivy.default.ivy.user.dir}" />
<property name="ivy.settings.file" value="${ivy.default.ivy.user.dir}/ivysettings.xml" />
四. 和nexus集成
我喜欢使用nexus来搭建maven2的私服,即使家里机器上的私服只有我一个人用......
因此想让ivy能连到我现有nexus私服,google了一下找到解决的方法,实验成功,只需要修改两个地方:
1. ivysettings.xml
将原有的
<include url="${ivy.default.settings.dir}/ivysettings-public.xml"/>
修改为
<include url="./ivysettings-public.xml"/>
2. 在ivysettings.xml相同目录下放置ivysettings-public.xml文件
实际从ivy.jar包中copy出对应文件,然后修改
<ibiblio name="public" m2compatible="true" root="http://192.168.0.30:8081/nexus/content/groups/public/"/>
注意这里的name="public"不能改,否则会报错。
有关public, shared, private三个repository的资料,请参考官方文档,说明的很细致
http://ant.apache.org/ivy/history/latest-release/tutorial/defaultconf.html
added in 2009-04-22:
上面的内容有点乱,三个星期后我在另一台机器上安装ivy时,对照本文看居然都没有直接搞定,又浪费了点时间折腾......
决定再啰嗦一点,下面是具体操作步骤,这次足够简单直接了:
1) install ant1.6+
set env ANT_HOME=G:\soft\ant
set Path, add ANT_HOME/bin
2) install ivy
set env IVY_HOME=G:\soft\ivy\ivy200
set env ivy.default.ivy.user.dir=G:\soft\ivy\userdir
3) config ivy for all projects and users
1. copy ivysettings.xml to userdir
2. copy ivysettings-public.xml to userdir
3. open ivysettings-public.xml, edit m2 URL
4) add ivy setting to ant build.xml of project
......
<property environment="env"/>
<property name="ivy.default.ivy.user.dir" value="${env.ivy.default.ivy.user.dir}" />
<property name="ivy.settings.file" value="${ivy.default.ivy.user.dir}/ivysettings.xml" />
......
added in 2009-05-29:
在linux上测试的时候,才发现一个问题,ivy.default.ivy.user.dir是不能作为linux下的环境变量名的!为了保持一致,只好修改为IvyDefaultUserDir。
即:
set env IvyDefaultUserDir=G:\soft\ivy\userdir
......
<property environment="env"/>
<property name="ivy.default.ivy.user.dir" value="${env.IvyDefaultUserDir}" />
<property name="ivy.settings.file" value="${ivy.default.ivy.user.dir}/ivysettings.xml" />
......
发表评论
-
搜索maven依赖的网站推荐
2011-12-02 16:04 4319使用maven填写依赖的时候,常会遇到需要查一下gro ... -
hudson中subversion HEAD check out 的问题及疑惑
2010-09-30 10:56 40近期发现一个问题,hudson执行任务时,经常不能获取 ... -
你走你的阳光道,我走我的独木桥:整合ant ivy 和testng
2010-05-31 16:11 2077近期自己折腾自己,放着正统的maven + jun ... -
slf4j1.6.0-RC0和logback的0.9.20版本不兼容
2010-04-26 08:54 3514今天,尝试使用slf4j + logback的黄金组合,结果发 ... -
fisheye2.2.1 & Crucible 2.2.1 安装配置笔记
2010-04-27 16:48 31851) 下载 从atlassian网站 ... -
让ivy支持maven的classifier属性
2009-10-15 01:56 3185在maven中,对于一个依赖,除了groupId,ar ... -
ivy教程(1)-目录
2009-09-21 23:57 2952学习的最佳方式是实践!这是ivy教程将帮助你做到的 ... -
ivy教程(2)-快速开始
2009-09-22 11:48 3061在这个例子中,我们将看到使用ivy的一个最简单的方 ... -
ivy教程(3)-调整默认设置
2009-09-24 20:58 2358ivy绑定一些默认 ... -
ivy教程(4)-多解析器
2009-09-25 15:28 1803这个例子演示模块是如何被多解析器获得的。使用多解析 ... -
ivy教程(5)-双重解析器
2009-09-27 20:58 1723在一些情况下,会发生这样的事情:你的模块描述符(ivy ... -
ivy教程(6)-项目依赖
2009-09-29 23:32 3007这个示例将举例说明在两个项目之间的依赖。 depen ... -
ivy教程(7)-在多项目环境下使用ivy
2009-10-03 11:48 2369在上一个教程中,你已 ... -
ivy教程(8)-使用ivy模块配置
2009-10-04 10:15 2669这个教程介绍ivy文件中的模块配置的使用。ivy模块配置事实上 ... -
ivy教程(9)-架设仓库(1)-介绍
2009-10-04 13:42 1853install任务让你从一个仓库复制一个模块或者模 ... -
ivy教程(10)-架设仓库(2)-基础仓库复制
2009-10-04 15:04 3054在这个步骤中我们使用install任务来从mave ... -
ivy教程(11)-架设仓库(3)-使用命名空间
2009-10-09 21:04 2259现在你已经看到从一个已经存在的仓库创建你自己的仓库是如何的简单 ... -
ivy教程(12)-更多例子
2009-10-09 21:29 1818如果你已经成功的跟随并理解了所有的教程,可能你还是需要得到更好 ... -
ivy中文参考文档(21)-ant任务(9)-post resolve tasks
2009-09-15 14:17 14671) post resolve tasks ... -
ivy中文参考文档(20)-ant任务(8)-cachefileset
2009-09-03 23:11 13941) cachefileset 为配置构建一个有iv ...
相关推荐
安装ivy-yasnippet通常涉及到将`ivy-yasnippet-master`压缩包解压后,将其中的源代码文件放入Emacs的load-path中,然后在Emacs配置文件中加载和初始化这个插件。确保你的Emacs已经安装了Yasnippet和Ivy的基础库,...
7. **安装与配置**:作为一个轻量级的系统,Ivy的安装和配置过程应该非常简单,用户只需要解压文件并根据提供的说明进行基本的设置即可开始使用。 8. **社区与文档**:开源项目通常有活跃的社区支持,用户可以通过...
1. **更快的初始加载**:Ivy可以生成更小的捆绑包,因为它采用了一种称为AOT(Ahead-of-Time)编译的方法,这使得应用在首次加载时更快。 2. **更好的Tree Shaking**:Ivy能够更有效地消除未使用的代码,从而减少...
标题中的"ThinkPad E431+i7-3632QM"指的是联想ThinkPad E431笔记本电脑,这款机器搭载了Intel的i7-3632QM...同时,由于黑苹果安装涉及到许多硬件兼容性和驱动问题,不建议初学者轻易尝试,而应寻求社区支持和教程指导。
1. **依赖管理**:Gradle使用 Ivy 和 Maven 仓库来管理项目依赖,可以自动下载所需库,并支持排除特定依赖。 2. **增量构建**:Gradle只重新构建那些已更改的部分,提高构建速度。 3. **插件系统**:Gradle拥有丰富...
如何运行Sodor的Emulator1:...这个过程涉及到Git的使用,环境变量配置以及第三方工具的安装与配置,对于初学者来说可能会有一定挑战,但通过这些步骤,你将能更好地理解软件开发的流程,并掌握处理依赖管理的技巧。
1. **入门指南**:提供了快速启动指南,帮助初学者快速搭建环境,并介绍基本概念。 2. **Spring 框架介绍**: - **依赖注入 (DI) 和控制反转 (IoC)**:这是 Spring 核心功能之一,通过 IoC 容器管理对象之间的...
#### 八、安装和配置Nutch 11. **安装Subversion和Ant**:首先需要安装Subversion用于获取Nutch源代码,并安装Ant用于构建项目。 12. **获取Nutch源码**:使用SVN命令从Apache仓库中检出指定版本的Nutch源代码。 13...
在这个文件中,你需要添加两行属性定义,`eclipse.home` 指向你的Eclipse安装路径,`version` 设置为Hadoop的版本号,例如`1.0.4`。 然后,修改 `%HADOOP_HOME%\src\contrib\eclipse-plugin` 目录下的`build.xml`...
从安装JDK、配置环境变量,到选择合适的IDE,再到学习版本控制、构建工具、测试框架以及日志管理,每个环节都是成为合格Java开发者所必需的技能。希望这份详细的介绍能为初学者提供有效的指导,助力你们在Java编程的...
#### 二、安装配置 - **软件需求**: - **JDK版本**:Activiti6要求至少JDK7及以上版本。用户可以通过访问Oracle Java SE下载页面获取并安装所需版本的JDK。验证安装是否成功的命令为`java -version`。 - **集成...
1. ****:这是Ant脚本的根元素,包含了整个构建过程的配置信息,如项目名称、版本、默认目标等。 2. ****:定义了构建过程中的一个具体步骤,如“compile”(编译)、“test”(测试)和“deploy”(部署)。每个...
它采用了Groovy和Kotlin作为构建脚本语言,提供了灵活的构建配置和强大的插件系统,使得开发者能够高效地管理和构建项目。 标题提到的"gradle-8.0-all"和"gradle-8.0-bin"是Gradle的两个不同发行版。它们的主要区别...
1. 安装JDK 1.8:确保系统已安装适合的JDK版本,因为这是Nexus运行的基础。 2. 解压文件:使用`tar -zxvf nexus-3.5.0-unix.tar.gz`命令解压Unix版的Nexus压缩包。 3. 移动到适当目录:通常会将解压后的目录移动到 `...
**1. 开始使用Spring** - **简介**:这部分内容为开发者提供了快速入门指南,帮助新用户理解如何启动一个基于Spring的项目。 - **目标读者**:面向希望了解如何快速设置并运行Spring应用的新手。 **2. Spring框架...
- **依赖管理和命名约定**:Spring框架支持多种依赖管理和构建工具,如Maven和Ivy。 - **日志(Logging)**:支持不同的日志框架,如Commons Logging、SLF4J和Log4J。 #### II. Spring 3.0新特性 - **Java 5的支持...
本教程旨在深入浅出地介绍Android开发的基础与高级技巧,帮助初学者和有一定基础的开发者系统性地掌握Android应用开发的各项技能。通过本教程的学习,你将能够全面理解Android的基本概念、核心框架以及相关的开发...
1. **环境配置**:安装JDK,设置好环境变量,下载并配置对应的SSH框架库到项目中。 2. **创建项目结构**:按照Maven或Ivy等构建工具的标准目录结构创建项目,包括src/main/java、src/main/resources等。 3. **配置...