Springboot调用kettle9。3 作业如下: mavenPOM文件配置 !kettle9。3dependencygroupIdcommonscodecgroupIdcommonscodecartifactIdversion1。15versionscopesystemscopesystemPath{kettleproject。dir}libcommonscodec1。15。jarsystemPathdependencydependencygroupIdorg。apache。commonsgroupIdcommonsioartifactIdversion2。2versionscopesystemscopesystemPath{kettleproject。dir}libcommonsio2。2。jarsystemPathdependencydependencygroupIdcom。google。commongroupIdguavaartifactIdversion17。0versionscopesystemscopesystemPath{kettleproject。dir}libguava17。0。jarsystemPathdependencydependencygroupIdorg。pentaho。digroupIdkettlecoreartifactIdversion9。3。0versionscopesystemscopesystemPath{kettleproject。dir}libkettlecore9。3。0。0428。jarsystemPathdependencydependencygroupIdorg。pentaho。digroupIdkettleengineartifactIdversion9。3。0versionscopesystemscopesystemPath{kettleproject。dir}libkettleengine9。3。0。0428。jarsystemPathdependencydependencygroupIdorg。pentaho。metastoregroupIdmetastoreartifactIdversion9。3。0versionscopesystemscopesystemPath{kettleproject。dir}libmetastore9。3。0。0428。jarsystemPathdependencydependencygroupIdorg。apache。commonsgroupIdcommonsvfs2artifactIdversion2。7。0versionscopesystemscopesystemPath{kettleproject。dir}libcommonsvfs22。7。0。jarsystemPathdependencydependencygroupIdorg。pentahogroupIdpentahoencryptionsupportartifactIdversion9。3。0。0428versionscopesystemscopesystemPath{kettleproject。dir}libpentahoencryptionsupport9。3。0。0428。jarsystemPathdependencydependencygroupIdnet。sourceforge。jexcelapigroupIdjxlartifactIdversion2。6。12versionscopesystemscopesystemPath{kettleproject。dir}libjxl2。6。12。jarsystemPathdependencydependencygroupIdcommonsdbcpgroupIdcommonsdbcpartifactIdversion1。4versionscopesystemscopesystemPath{kettleproject。dir}libcommonsdbcp1。4。jarsystemPathdependencydependencygroupIdcommonspoolgroupIdcommonspoolartifactIdversion1。5。7versionscopesystemscopesystemPath{kettleproject。dir}libcommonspool1。5。7。jarsystemPathdependency 以上使用本地kettle中的包,本地kettle路径lib如下 导入kettlepasswordencoderplugins。xml文件,放在根目录之下,如图 passwordencoderpluginspasswordencoderpluginidKettledescriptionKettlePasswordEncoderdescriptionclassnameorg。pentaho。support。encryption。KettleTwoWayPasswordEncoderclassnamepasswordencoderpluginpasswordencoderplugins Kettle工具类 作业路径 service Value({kettle。script。path})privateStringdirPath;publicvoidrunKtr(Stringtransname){try{KettleEnvironment。init();TransMetatransMetanewTransMeta(dirPathtransname。ktr);TranstransnewTrans(transMeta);trans。execute(null);trans。waitUntilFinished();System。out。println(dzz);}catch(KettleExceptione){e。printStackTrace();}}publicvoidrunKjb(Stringjobname,MapString,Stringparams){try{KettleEnvironment。init();JobMetajmnewJobMeta(dirPathjobname。kjb,null);JobjobnewJob(null,jm);if(params!null){IteratorMap。EntryString,Stringentriesparams。entrySet()。iterator();while(entries。hasNext()){Map。EntryString,Stringentryentries。next();job。setVariable(entry。getKey(),entry。getValue());设置变量job。setParameterValue(entry。getKey(),entry。getValue());System。out。println(1dzzentry。toString());}}job。start();ResultresultnewResult();job。execute(0,result);job。waitUntilFinished();System。out。println(resultdzzresult。toString());}catch(KettleExceptione){e。printStackTrace();}} controller 内容如下ResponseBodyRequestMapping(toKettletrans{transname})publicStringtoKettletran(PathVariable(transname)Stringtransname){kettleservice。runKtr(transname);returnkettletransfinished;}ResponseBodyRequestMapping(toKettlejob{jobname})publicStringtoKettlejob(PathVariable(jobname)Stringjobname){MapmapnewHashMap();map。put(filename,结算主单11);map。put(filename2,结算主单22);kettleservice。runKjb(jobname,map);returnkettlejobfinished;} 执行 202328