IVY+IVYDE 非经典实践 ^^^^^^^^^^^^^^^^^^^^ - 作者:臭豆腐[trydofor.com] - 日期:2010-06-07 - 授权:署名-非商业-保持一致 1.0 协议 - 声明:拷贝、分发、呈现和表演本作品,请保留以上全部信息。 0. 文档目录 ^^^^^^^^^^^ [[<=$INDEX]] 1. 在我和你间填个字 ^^^^^^^^^^^^^^^^^^^ 肉麻的开始,很自然会填V,于是就有了IVY了。 话说这一日,豆腐心血来潮,要写一个程序,要求是这样的: * 在两个数据库之间倒动数据。 * 可以定制,灵活的,易懂的。 * 表间有依赖,有自增型主键。 * 简单简洁,全JDBC,全SQL。 不想让日本人知道,进而不想让印度人知道,于是建了个模块。 credit_tea,希望这个模块内的东东可以象茶一样清爽。 自然想到了Maven2,但这家伙始终让我望而止步,没大规模使用过。 又自然的想起了IVY,因为大家对ANT熟,Spring也用它们。 2. 爱是这么炼成地 ^^^^^^^^^^^^^^^^^ http://ant.apache.org/ivy/ 最新ivy-2.1.0.jar,放到 ant1.7.0/lib下 (注意Spring编译时不这么放)。 http://ant.apache.org/ivy/ivyde/index.html 最新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. 我爱你,就像蚂蚁爱日食 ^^^^^^^^^^^^^^^^^^^^^^^^^ 脚本打包备查,十分简陋,能运行,仅供参考。 [[datasync的build文件 =>./data/datasync-build.zip]] [[librepo的scripts文件 =>./data/librepo-scripts.zip]] 话说,俺十分希望 ivyde能像ant一样的确定 properties 和工作。 在 ant 制作release文件的时候,发送了一些插曲。 首先,是 ivy管理的依赖 如何进 release/lib/。步骤如下: 1) ivy:cachefileset 2) copy todir="${dir.release.lib}" flatten="true" 然后,是如何进MANIFEST.MF文件。步骤如下: 1) pathconvert 转换相对路径和 dirsep "/" 2) 了解 MANIFEST.MF 定义中的换行规则。 最后,是IVY的conf规则,这个是没认真看手册,卡在了dom4j的依赖上。 dom4j的ivy.xml中conf有10个。默认全引入过来,一堆jar。 在细读手册之后,增加了conf="*->master"。 这么折腾的好处是,lib管理都给IVY了,工程清楚。发布的时候ant给收集过来。 略带点遗憾,就是这次依旧用了jdk1.4,没有泛型,集合类操作起来很晕乎。