最近看了一些kettle的文章,都是kettle7.0以前的,已经跟不上时代了。截止笔者写这篇文章的时候,github上面的已经是7.1.0.3了,而且是发行版的,最新的快照版本已经是8.0的了。基于此,有必要写一篇关于7.1之后的版本的kettle说明了。

特别说明,我用的项目的构建工具是maven,而不是ant了,如果想用ant的童鞋可以用一下maven的插件maven-antrun-plugins,还是比较好用的。

  好了,开始吧! 

第一步:下载源码。

源码地址在github上面:https://github.com/pentaho/pentaho-kettle.git,看到这里我用的是https的协议,如果要用ssh的协议的话,需要将你的公钥上传到github上面。不过不影响我们下载源码。

git的命令如下:git clone https://github.com/pentaho/pentaho-kettle.git。

完成之后,我们用一下maven的build命令呗(到项目的根目录下面):mvn clean install.  这下会报告一个父pom.xml找不到的错误,为什么会找不到呢?因为地址不对呗,我们把父项目里面的<parent></parent>这个节点给注释掉,就ok了。我猜想是他们团队对maven不是太了解,或者是运行的环境不同吧,但是在这里,明确告诉童鞋们,这个<parent></parent>确实有问题,不需要啦!

接着再来一次mvn clean install.又报错了,说是maven仓库找不到jar包,这里我们的解决方案如下:在父pom.xml中加入节点

  

<repositories>
<repository>
<id>pentaho-releases</id>
<url>http://repository.pentaho.org/artifactory/repo/</url>
</repository>
<repository>
<id>pentaho-nexus</id>
<url>https://nexus.pentaho.org/content/groups/omni/</url>
</repository>
</repositories>

这个节点指向了他们自己的jar包仓库,这两个都可以用,是一样的,建议都加上,以免遇到维护的时候,我们下不了jar包。

接着我们第三次mvn clean install!又来一个错误,是编译的版本过低,适应不了目前的代码需求,这个好解决啊。这个我们可以人为的提高一下编译的版本,在父pom.xml中加入以下代码:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>

这个节点是以插件的形式将编译的版本提高到jdk1.8.

下面再来编译呗,第四次mvn clean install。这下可以了,可以看到jar在一个一个下载了。可能时间比较慢,是个人的网速而定!一般要3个小时以上(这是最快的了,因为它会下载很多zip文件下来之后解压)。

编译好了之后,我们在assemblies/pdi-ce/target/下面有一个zip文件包,解压之后会得到一个分发包。双击Spoon.bat就可以了!

以上就是kettle源码编译的过程了。之所以没有截图给大家,是因为我已经成功了,不想再来一遍了。如果各位童鞋有什么问题,可以在下面留言,只要是我知道的,我会解答的!

还要强调一点的是,不要单独建立lib目录,脱离maven的环境,这样的项目说白了就是不严谨,没有规范,不适合我们新世纪的高科技码农人才!

pentaho专题系列之kettle篇--kettle源码编译的更多相关文章

  1. Kettle 5.0源码编译

    下载源码请参考上一篇博文Kettle4.4.2源码分析 Kettle 5.0以前的库文件通过ant管理,5.0+的库文件通过ant+ivy管理.Eclipse一般都是安装ant插件,不安装ivy插件, ...

  2. 第一篇: openJDK源码编译安装--mac版本

    1.为什么要编译JDK 想要一探JDK内部的实现机制,最便捷的路径之一就是自己编译一套JDK,通过阅读和跟踪调试JDK源码去了解Java技术体系的原理,虽然门槛高一点,但肯定比阅读各种书籍,文章,博客 ...

  3. 分布式架构高可用架构篇_06_MySQL源码编译安装(CentOS-6.7+MySQL-5.6)

    redhat: 下载:http://dev.mysql.com/downloads/mysql/ 选择5.6 source包 解压 cmake . -DCMAKE_INSTALL_PREFIX=/us ...

  4. Java 集合系列 10 Hashtable详细介绍(源码解析)和使用示例

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  5. 【Orleans开胃菜系列2】连接Connect源码简易分析

    [Orleans开胃菜系列2]连接Connect源码简易分析 /** * prism.js Github theme based on GitHub's theme. * @author Sam Cl ...

  6. Eureka 系列(04)客户端源码分析

    Eureka 系列(04)客户端源码分析 [TOC] 0. Spring Cloud 系列目录 - Eureka 篇 在上一篇 Eureka 系列(01)最简使用姿态 中对 Eureka 的简单用法做 ...

  7. Feign 系列(04)Contract 源码解析

    Feign 系列(04)Contract 源码解析 [TOC] Spring Cloud 系列目录(https://www.cnblogs.com/binarylei/p/11563952.html# ...

  8. Centos 7源码编译安装 php7.1 之生产篇

    Centos 7源码编译安装 php7.1 之生产篇 Published 2017年4月30日 by Node Cloud 介绍: 久闻php7的速度以及性能那可是比php5系列的任何一版本都要快,具 ...

  9. Java中常用的七个阻塞队列第二篇DelayQueue源码介绍

    Java中常用的七个阻塞队列第二篇DelayQueue源码介绍 通过前面两篇文章,我们对队列有了了解及已经认识了常用阻塞队列中的三个了.本篇我们继续介绍剩下的几个队列. 本文主要内容:通过源码学习De ...

随机推荐

  1. 【LeetCode】152. Maximum Product Subarray

    题目: Find the contiguous subarray within an array (containing at least one number) which has the larg ...

  2. panic和recover的使用规则

    转自个人博客 chinazt.cc 在上一节中,我们介绍了defer的使用. 这一节中,我们温习一下panic和recover的使用规则. 在golang当中不存在tye ... catch 异常处理 ...

  3. CSS input type="number"出现上下箭头时解决方案

    input type="number"时录入内容不可控制,解决方案是在css中添加//火狐input[type=number] {      -moz-appearance:tex ...

  4. MAC开发环境安装

    MAC开发环境安装 安装sancha cmd: 安装: https://www.sencha.com/products/extjs/cmd-download/ cmd运行 $ open .bash_p ...

  5. CSS样式表之background背景

    [CSS常用背景属性]:background (缩写形式) background-color:背景色 background-image:背景图  url中放图片地址,背景图和背景色同时存在时,背景图覆 ...

  6. struts2框架下的一个简单的ajax例子

    举个例子 jsp页面: <%@ page language="java" import="java.util.*" pageEncoding=" ...

  7. gulp inline

    在html中所有需要内敛的文件 script link 后面都要写上inline 这样才能够,内敛到文件中.

  8. Opencv探索之路(十九):读写xml和yml文件

    有时候我们处理完图像后需要保存一下数据到文件上,以供下一步的处理.一个比较广泛的需求场景就是:我们对一幅图像进行特征提取之后,需要把特征点信息保存到文件上,以供后面的机器学习分类操作.那么如果遇到这样 ...

  9. java Static的使用

    static是一个静态修饰符,用于修饰成员(成员变量,成员函数).<thinking in java>对staic的使用场景有下面2种定义:“一种情形是只想用一个存储区域来保存一个特定的数 ...

  10. curl学习之curl_setopt参数设置大总结

    CURL函数库里最重要的函数是curl_setopt(),它可以通过设定CURL函数库定义的选项来定制HTTP请求使用方法:bool curl_setopt (int ch, string optio ...