java调用kettle自定义kettle.properties配置文件路径

默认路径

java调用kettle的jar包时,在初始化环境的时候,会在指定路径创建并加载kettle的kettle.properties文件,该文件的默认位置为 ${user.dir}/.kettle/kettle.properties,在不同的系统上,${user.dir} 的默认位置如下:

系统 路径
Windows C:\Users\用户\.kettle\kettle.properties
Macos /Users/用户名/.kettle/kettle.properties
Linux /home/用户名/.kettle/kettle.properties

但是如果你设置了KETTLE_HOME 这个环境变量,Kettle将会在该路径下查找或创建kettle.properties文件:${KETTLE_HOME}/.kettle/kettle.properties

源码如下:

/**
* Looks up the user's home directory (or KETTLE_HOME) for every invocation. This is no longer a static property so
* the value may be set after this class is loaded.
*
* @return The path to the users home directory, or the System property {@code KETTLE_HOME} if set.
*/
public static String getUserHomeDirectory() {return NVL( System.getenv( "KETTLE_HOME" ), NVL( System.getProperty( "KETTLE_HOME" ),System.getProperty( "user.home" ) ) );
}

修改默认路径

直接设置 KETTLE_HOME 即可

public static void initEnvironment() throws IOException, KettleException {System.setProperty("KETTLE_HOME","/Volumes/DATA/temp/kettle");KettleEnvironment.init();String directory = Const.getKettleDirectory();System.out.println("KETTLE_HOME:"+directory);}

log输出如下

KETTLE_HOME:/Volumes/DATA/temp/kettle/.kettle

默认加了.kettle 路径
如果不想要.ketttle这个目录,可以参考如下方法:
源码如下

 public static String getKettleDirectory() {return getUserHomeDirectory() + FILE_SEPARATOR + getUserBaseDir();}/*** Determines the Kettle directory in the user's home directory.** @return The Kettle directory.*/public static String getUserBaseDir() {return BasePropertyHandler.getProperty( "userBaseDir", ".kettle" );}

源码中未找到设置 userBaseDir 的地方,但是可以利用java的反射来修改

public static void initEnvironment() throws IOException, KettleException {System.setProperty("KETTLE_HOME","/Volumes/DATA/temp");//反射修改 userBaseDirBasePropertyHandler instance = BasePropertyHandler.getInstance();Object instanceHandler = ReflectUtil.invoke(instance, "getInstanceHandler");java.util.LinkedList<OverlayProperties> propList = (java.util.LinkedList<OverlayProperties>) ReflectUtil.getFieldValue(instanceHandler, "propList");OverlayProperties overlayProperties = new OverlayProperties("");overlayProperties.setProperty("userBaseDir","kettle");propList.add(overlayProperties);//环境初始化KettleEnvironment.init();String directory = Const.getKettleDirectory();System.out.println("directory:"+directory);// 获取配置参数String params = EnvUtil.getSystemProperty("KETTLE_LAZY_REPOSITORY");System.out.println("params:"+params);}

日志输出如下

directory:/Volumes/DATA/temp/kettle
params:false

java调用kettle自定义kettle.properties配置文件路径相关推荐

  1. java使用properties_Java中使用Properties配置文件的简单方法

    properties Properties文件是java中的一种配置文件,文件后缀为".properties",文件的内容格式是"key=value"的格式,用 ...

  2. java修改配置文件参数_在java类中获取在.properties配置文件中设置的参数

    如何获取.properties配置文件中的参数,我在网上查了半天没弄明白,后来在以前的项目中找到了,就写下来,避免遗忘. 1.配置文件:message_product.properties total ...

  3. java 注解加载配置文件_Spring的Java配置方式和读取properties配置文件

    java配置是spring4.x推荐的配置方式,可以完全替代xml配置. 1.注解 @Configuration 和 @Bean spring的java配置方式是通过@Configuration和@B ...

  4. java调用kettle批量执行

    java调用kettle批量执行 之前只做了一个java调用单一ktr的例子,在用web程序控制ETL数据抽取过程的时候,难免会遇到要执行一个复选框列表的ktr,那么前段传过来的就不仅仅是一个ktr: ...

  5. java 调用kettle job 传参_java调用kettle向job(任务)和transformation(转换)传递参数实例...

    虽然网上文章有说java可以传递参数给kettle,不过只找到了传递参数给转换的文章,没有讲参数传递给job,kettle中如何使用java传递的参数.今天就以上问题,一并共享. /** * 本测试类 ...

  6. java调用kettle例子_Kettle API - Java调用示例

    Kettle API - Java调用示例 对向前兼容性的推荐:如果想要动态地创造Transformation (例如:从元数据),使用XML文件方法(KTR)而不是使用API.XML文件兼容Kett ...

  7. 【转载】java读取.properties配置文件的几种方法

    读取.properties配置文件在实际的开发中使用的很多,总结了一下,有以下几种方法(仅仅是我知道的): 一.通过jdk提供的java.util.Properties类. 此类继承自java.uti ...

  8. java基础5:工厂模式、单例模式、File文件类、递归、IO流、Properties配置文件、网络编程、利用IO流模拟注册登录功能、关于反射、JDK动态代理

    1.工厂模式 23种java设计模式之一 1)提供抽象类(基类) 2)提供一些子类,完成方法重写 3)提供一个接口:完成具体子类的实例化对象的创建,不能直接new子类,构造函数私有化. 优点:具体的子 ...

  9. java中使用配置文件_Java中使用Properties配置文件的简单方法

    Java中使用Properties配置文件的简单方法 properties Properties文件是java中的一种配置文件,文件后缀为".properties",文件的内容格式 ...

最新文章

  1. Shell编程(week4_day1)--技术流ken
  2. “光名字就想了一年”,苹果三位高管谈M1芯片
  3. php微信回复乱码,php版微信公众平台回复中文出现乱码问题的解决方法
  4. activemq无账户密码登录配置修改
  5. 【控制】麦克纳姆轮 Mecanum 小车模型分析
  6. ue4sky时间_UE4 SkyLight RealTimeCapture浅析
  7. 机房系统(七)——【报表】
  8. linux文件读保护,Linux Rootkit实现文件保护
  9. BX、DI、SI、BP总结
  10. 垃圾回收算法与垃圾回收器
  11. 前端特效demo | 一起围观 10 种创意时钟
  12. sql经典题目(1)
  13. js高级学习笔记(b站尚硅谷)-15-闭包的剩余知识
  14. haneWIN搭建Win10 NFS服务器
  15. 配电网PMU优化配置与状态估计(Matlab代码实现)
  16. Cocos从零开发一个翻译插件
  17. 第一百二十一天 : varnish
  18. 如何让自己像打王者荣耀一样发了疯、拼了命、石乐志的学习?
  19. ztree通过ajax获取json并勾选checkbook
  20. 苹果WWDC将于6月8日夏季发布会苹果WWDC发布会直播地址

热门文章

  1. Windows程序设计(中文第五版·珍藏版).mobi 电子书
  2. python 写入excel数据xlwt_用python包xlwt将数据写入Excel中
  3. 关于@hide的理解
  4. 愿你熠熠生辉 自成光芒!清微智能祝所有女神节日快乐~
  5. 最新面试必看的 数据库 知识大总结
  6. 黑盒测试、白盒测试、灰盒测试的区别
  7. 【QT小记】设置窗口背景透明
  8. 【leetcode刷题】找到需补充粉笔的学生编号
  9. Hue 集成Hive
  10. C++程序设计课程设计报告——自助点餐系统