Kettle dependency management

2012.04.13 | Comments

pentaho的项目使用了ant和ivy解决项目依赖,所以必须编译源码需要ivy工具.直接使用ivy编译pentaho的bi server项目,一直没有编译成功.
使用ivy编译kettle的源代码却是非常容易的事情.

该篇文章翻译并参考了Will Gorman在pentaho的wiki上添加的Kettle dependency management,文章标题没作修改.
编写此文,是为了记录编译kettle源码的方法和过程.

以下是对原文的一个简单翻译. 将kettle作为一个产品发行是一个很有趣的事情.有很多来自于pentaho其他项目(其中有一些有依赖于kettle)的jar包被导入到kettle.这些jar包必须在发行的时候构建并且加入到kettle中.如果一个核心的库被更新了,我们必须将其导入到kettle中(如果有必要).bi服务器,pentaho报表以及pentaho元数据编辑器都将kettle作为一个服务/引擎资源而被构建的.自从我们已经将这些jar导入到我们的源码仓库,这些项目必须使用ivy明确列出kettle以及他的依赖.当kettle的依赖变化的时候,我们必须审查libext文件是否需要更新.

pentaho创建了一系列的脚本来自动化的安装ivy,解决jar(或者是artifacts),构建并发行artifacts.kettle已经升级使用subfloor(简单的意味着build.xml继承自subfloor的构建脚本).subfloor使用ivy从pentaho仓库()或者ibiblio maven2仓库来获取跟新jar.ibiblio仓库用于大多数第三方的jar文件(如apache-commons).pentaho仓库用于在线的pentaho项目或者一些比在ibiblio的三方库.为了解决kettle的依赖,我们不得不在ivy.xml里创建一个清单.这个文件明确地列出每一个没有传递依赖的jar文件.这意味着libext文件的映射在ivy.xml中是一对一的. 关于Ivy Apache Ivy™是一个流行的致力于灵活性和简单性的依赖管理工具.更多的参考:enterprise features, what people say about it, 以及 how it can improve your build system

在kettle中使用ivyIDE 首先,从svn上下载kettle的源代码:

svn://source.pentaho.org/svnkettleroot/Kettle/trunk
如果你想在Eclipse上使用ivyde plugin.
请参考相关文章安装该插件.

如果你不想使用ivyde,你可以简单快速并且容易的开始并编译代码.
1.执行ant resolve,这个命令将会创建一个叫做resolved-libs的文件夹.
2.使用下面命令更新classpath
a.手动的添加这些jar文件到你的ide的classpath
b.执行ant create-dot-classpath,将会修改你的.classpath文件(注意刷新项目以使改变生效)
注意:kettle项目中的构建脚本会自动安装ivy插件.

构建Kettle 你可以下载kettle源代码然后立即执行ant distrib命令
或者你可以在ide中导入下载的kettle工程,然后按照你的操作系统(默认的是Windows 32-bit)版本修改依赖的swt.jar文件.

ivy中未完成的 pentaho-database-这是一个依赖kettle-db的常用项目,但又被kettle-ui使用.这样会导致循环依赖,将来可能会将其引入到kettle项目或是从该项目中去掉对kettle的依赖. swt-swt文件目前没有包括在ivy.xml文件中 library configurations-每一个kettle库(kettle-db,kettle-core等等)应该在ivy.xml中有他自己的依赖.这些库应该继承一些特定的依赖,而取代继承整个kettle依赖. checked-in plugins-当前引入的插件如;DummyJob, DummyPlugin, S3CsvInput, ShapeFileReader3,versioncheck应该都移到ivy的plugin配置中.

参考文章 Kettle dependency management


原创文章,转载请注明: 转载自JavaChen Blog,作者:JavaChen
本文链接地址:http://blog.javachen.com/2012/04/13/kettle-dependency-management.html
本文基于署名2.5中国大陆许可协议发布,欢迎转载、演绎或用于商业目的,但是必须保留本文署名和文章链接。 如您有任何疑问或者授权方面的协商,请邮件联系我。