DeltaRelease–Java Web增量发布工具(附源码)

DeltaRelease,Java Web 增量发布工具,又称增量更新打包工具,,是指在Java Web应用程序用来发布补丁包的一种工具。因增量发布具有风险小,更新速度快等优势,在企业Java Web应用发布补丁时所广泛使用。本着有福同享的奉献精神,小编将这款好用的工具免费送给大家。

Java Web增量发布工具的源码已经发布到GitHub,有需要的小伙伴们可以猛击这里查看。

1.publish_config.xml配置文件,配置补丁文件的源位置及发布位置

<?xmlversion=”1.0″encoding=”UTF-8″?><config><appsdefault=”favsoft”patchFolder=”d:/favsoft/patchFolder”><appappName=”deltaRelease”patchFile=”deltaReleaseFile.txt”><patch_source_dir>E:\work\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\webapps\DeltaRelease</patch_source_dir><patch_dest_dir>/opt/apache-tomcat-7.0.28/webapps/DeltaRelease</patch_dest_dir></app></apps></config>

2.PublishService.java,发布服务类,获取编译好的补丁文件,发布到目标位置。

packagecom.favccxx.favsoft.deltarelease;importjava.io.File;importjava.io.IOException;importjava.util.Iterator;importjava.util.List;importorg.apache.commons.configuration.HierarchicalConfiguration;importorg.apache.commons.io.FileUtils;importorg.apache.commons.lang.StringUtils;importorg.apache.logging.log4j.LogManager;importorg.apache.logging.log4j.Logger;publicclassPublishService{privatestaticLoggerlogger=LogManager.getLogger(PublishService.class.getName());publicstaticvoidgetDeltaReleaseFiles(){StringsourceFolder=SystemConfig.getInstance().getString(“apps[@default]”);StringpatchFolder=SystemConfig.getInstance().getString(“apps[@patchFolder]”);try{//清理输出文件目录Filefile=newFile(patchFolder);if(file.exists()){FileUtils.cleanDirectory(newFile(patchFolder));}FileUtils.forceMkdir(newFile(patchFolder));}catch(IOExceptione){logger.error(“ErrorgetFile,Thewrongfilepathis:”+patchFolder);logger.error(“ErrorMessageis:”+e.getMessage());}//取出最新的class列表List<HierarchicalConfiguration>appList=SystemConfig.getInstance().configurationsAt(“apps.app”);for(Iterator<HierarchicalConfiguration>iterator=appList.iterator();iterator.hasNext();){HierarchicalConfigurationhierarchicalConfiguration=iterator.next();StringappName=hierarchicalConfiguration.getString(“[@appName]”);StringpatchFilePath=hierarchicalConfiguration.getString(“[@patchFile]”);Stringpatch_source_dir=hierarchicalConfiguration.getString(“patch_source_dir”);Stringpatch_dest_dir=hierarchicalConfiguration.getString(“patch_dest_dir”);StringdestDir=patchFolder+patch_dest_dir;//执行拷贝补丁文件copyPatchFile(appName,patch_source_dir,patchFilePath,destDir);}}privatestaticvoidcopyPatchFile(StringappName,StringsourceDir,StringpatchFilePath,StringdestDir){logger.info(“******************************开始拷贝”+appName+”工程的补丁文件**************************”);try{//创建生成补丁文件的目录FileUtils.forceMkdir(newFile(destDir));}catch(IOExceptione){logger.error(“ErrorgetdestDir,Thewrongpathis:”+destDir);logger.error(“ErrorMessageis:”+e.getMessage());}FilepatchFile=newFile(Thread.currentThread().getContextClassLoader().getResource(PublishConstants.SYSTEM_CONFIG_DIR+patchFilePath).getFile());//读取补丁文件–deltaReleaseFile.txttry{ListfileLines=FileUtils.readLines(patchFile);intcount=0;for(Iteratoriterator=fileLines.iterator();iterator.hasNext();){StringfileName=(String)iterator.next();if(StringUtils.isNotEmpty(fileName)){if(fileName.endsWith(“java”)){//java补丁文件,需找到对应的classfileName=fileName.replaceAll(“.java”,”.class”);StringsourceFilePath=sourceDir+”\\WEB-INF\\classes”+fileName;FilecompileFile=newFile(sourceFilePath);if(compileFile.exists()){StringdestFilePath=destDir+”\\WEB-INF\\classes”+fileName;FileUtils.copyFile(compileFile,newFile(destFilePath));logger.info(“——-“+++count+”成功拷贝补丁文件到:”+destFilePath);}else{logger.error(“未找到该补丁文件,错误的路径:”+sourceFilePath);}}else{//JSP、CSS、JS等格式的文件直接copy到工程的目录StringsourceFilePath=sourceDir+fileName;StringdestFilePath=destDir+fileName;FileUtils.copyFile(newFile(sourceFilePath),newFile(destFilePath));logger.info(“——-“+++count+”成功拷贝补丁文件到:”+destFilePath);}}}logger.info(“******************************”+appName+”工程补丁文件获取成功,共拷贝”+count+”个补丁文件**************************”);}catch(IOExceptione){logger.error(“ErrorinexecutecopyPatchFile.Thewrongmessageis:”+e.getMessage());}}}

3.增量发布日志

本文出自 “尘风随影的天空” 博客,请务必保留此出处

走自己的路,让别人说去吧

DeltaRelease–Java Web增量发布工具(附源码)

相关文章:

你感兴趣的文章:

标签云: