http://trydofor.com/a9w3-auhome/trydofor/article/2010/0607220448/body.htm
IVY+IVYDE 非经典实践
作者:臭豆腐[trydofor.com]
日期:2010-06-07
授权:署名-非商业-保持一致 1.0 协议
声明:拷贝、分发、呈现和表演本作品,请保留以上全部信息。
文档目录
1. 在我和你间填个字
肉麻的开始,很自然会填V,于是就有了IVY了。
话说这一日,豆腐心血来潮,要写一个程序,要求是这样的:
- 在两个数据库之间倒动数据。
- 可以定制,灵活的,易懂的。
- 表间有依赖,有自增型主键。
- 简单简洁,全JDBC,全SQL。
不想让日本人知道,进而不想让印度人知道,于是建了个模块。
credit_tea,希望这个模块内的东东可以象茶一样清爽。
自然想到了Maven2,但这家伙始终让我望而止步,没大规模使用过。
又自然的想起了IVY,因为大家对ANT熟,Spring也用它们。
2. 爱是这么炼成地
最新ivy-2.1.0.jar,放到 ant1.7.0/lib下 (注意Spring编译时不这么放)。
最新ivyde-2.0.0 安装到非eclipse目录,如,D:/software/eclipse_plugins/
先说这个ivyde,在设置properties和setting时,很缺心眼。
- enable project specific settings时,必须 setting和properties全指定。
- 俺不想动Ivy的默认设置,只想和ant一样修改个properties而已,但不行。
在这种情况下,为了使eclipse正常开发,采用了曲道救国的策略。
- 把public中用的lib,放到shared中。
- 把内部生产的lib,放到local中。
- ant和ivyde都是用默认 cache,但由ant初始化。
于是eclipse package视图结构如下:
<txt> eclipse package |
Credit_Tea、 |-- cn.edgesoft.credit.database.datasync |--|-- src/ # 主源代码 |--|-- test/ # Junit源代码 |--|-- JRE System Library [j2re1.4.2_13] |--|-- build/ivy.xml[*] |--|-- build/ |--|--|-- build.properties |--|--|-- build.xml |--|--|-- ivy.xml |--|--|-- ivysettings.properties ... ... ... |-- cn.edgesoft.credit.librepo |--|-- ivyrepo/ # ivy 仓库 |--|--|-- local/ |--|--|-- shared/ |--|-- scripts/ # 构建仓库的脚本 |--|--|-- ant-default-setting.properties |--|--|-- ant-ivr-publish-jars.properties |--|--|-- ant-ivr-publish-jars.xml |--|--|-- ivy.xml |--|--|-- ivysettings.properties |
3. 我爱你,就像蚂蚁爱日食
脚本打包备查,十分简陋,能运行,仅供参考。
话说,俺十分希望 ivyde能像ant一样的确定 properties 和工作。
在 ant 制作release文件的时候,发送了一些插曲。
首先,是 ivy管理的依赖 如何进 release/lib/。步骤如下:
- ivy:cachefileset
- copy todir="${dir.release.lib}" flatten="true"
然后,是如何进MANIFEST.MF文件。步骤如下:
- pathconvert 转换相对路径和 dirsep "/"
- 了解 MANIFEST.MF 定义中的换行规则。
最后,是IVY的conf规则,这个是没认真看手册,卡在了dom4j的依赖上。
dom4j的ivy.xml中conf有10个。默认全引入过来,一堆jar。
在细读手册之后,增加了conf="*->master"。
这么折腾的好处是,lib管理都给IVY了,工程清楚。发布的时候ant给收集过来。
略带点遗憾,就是这次依旧用了jdk1.4,没有泛型,集合类操作起来很晕乎。