基本信息
源码名称:用gradle实现备份
源码大小:4.78KB
文件格式:.gradle
开发语言:Groovy
更新时间:2015-08-18
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
用gradle实现备份
import java.text.DateFormat import java.text.SimpleDateFormat def getDate() { DateFormat df = new SimpleDateFormat("yyyyMMdd"); return df.format(new Date()); } def atlassianFromDir = file('D:/atlassian-jira-6.3.6-standalone') def jirahomeFromDir = file('D:/jira_home') def atlassianToDir = file('e:/atlassian-jira-6.3.6-standalone_Bak') def jirahomeToDir = file('e:/jira_home_Bak') def logfile = file('run.log') GradleLog logger = new GradleLog(true) task initDir{ logger.info("---初始化备份目录") delete(atlassianToDir) atlassianToDir.mkdirs() delete(jirahomeToDir) jirahomeToDir.mkdirs() } task copyAtlassian(type: Copy, dependsOn: initDir) { logger.info('---复制JIRA目录---') from atlassianFromDir into atlassianToDir exclude { details -> details.file.name.endsWith('.tmp') || details.file.name.endsWith('.log') } } task zipAtlassian(type: Zip, dependsOn: copyAtlassian) { logger.info('---压缩JIRA目录---') from atlassianToDir baseName = 'atlassian' getDate() } task copyAtlassianZip(type: Copy, dependsOn: zipAtlassian) { logger.info('---备份JIRA目录Zip---') from 'atlassian' getDate() '.zip' into 'y:/' } task copyJirahome(type: Copy, dependsOn: copyAtlassianZip) { logger.info('---复制JIRAHOME目录---') from jirahomeFromDir into jirahomeToDir exclude { details -> details.file.name.endsWith('.lock') || details.file.name.endsWith('.log') } } task zipJirahome(type: Zip, dependsOn: copyJirahome) { logger.info('---压缩JIRAHOME目录---') from jirahomeToDir baseName = 'jirahome' getDate() } task copyJirahomeZip(type: Copy, dependsOn: zipJirahome) { logger.info('---备份JIRAHOME目录Zip---') from 'jirahome' getDate() '.zip' into 'y:/' } task mysqldump(type:Exec, dependsOn: copyJirahomeZip) { logger.info('---导出JIRA数据库---') commandLine 'cmd', '/c', 'D:/MySQL/bin/mysqldump -uroot -phello jiradb > jiradb.sql' } task zipJiradb(type: Zip, dependsOn: mysqldump) { logger.info('---压缩JIRA数据库Dump文件---') from 'jiradb.sql' baseName = 'jiradb' getDate() } task copyJiradbZip(type: Copy, dependsOn: zipJiradb) { logger.info('---备份JIRA数据库Zip---') from 'jiradb' getDate() '.zip' into 'y:/' } task sendMail(type: JavaExec) { def mailhost = 'smtp.qq.com' def user = '694240994' def password = 'rinor123456' def from = '694240994@qq.com' def to = 'edp045@sohu.com,405257595@qq.com' def subject = "JIRA备份" def argsList = " -M ${mailhost} -U ${user} -P ${password} -o ${from} -s ${subject} -a run.log ${to}" main = 'com.eagle.common.sendmail' classpath = files('javamailtool.jar') classpath files('lib/mail.jar') args = argsList.split().toList() } task backup{ def subject = "JIRA备份" try{ dependsOn copyAtlassianZip dependsOn copyJirahomeZip dependsOn copyJiradbZip logger.info('---备份完成---') }catch(ex){ subject = "JIRA备份失败" logger.info(ex.getMessage()) }finally{ def mailhost = 'smtp.qq.com' def user = '694240994' def password = 'rinor123456' def from = '694240994@qq.com' def to = '405257595@qq.com,yyqu@hugetech.com.cn,lliu@hugetech.com.cn' def argsList = " -M ${mailhost} -U ${user} -P ${password} -o ${from} -s ${subject} -a run.log ${to}" javaexec{ main = 'com.eagle.common.sendmail' classpath = files('javamailtool.jar') classpath files('lib/mail.jar') args = argsList.split().toList() } } } import java.util.List; import java.util.ArrayList; public class GradleLog { private List messages = new ArrayList(); def logFile = "run.log" //定义日志文件名 private boolean enable = false; //定义一个日志开关 public GradleLog(boolean enable){ this.enable = enable } public boolean isEnable() { return enable; } public List getMessages() { return messages; } public void info(String message){ getMessages().add(message) println message//打印当前消息 output(message) //输出消息 } public void error(String message){ getMessages().add(message) output(message) output("Build Failed") throw new GradleException(message) //Error级别默认抛异常 } private void output(String message){ if(isEnable()){ //开关开启状态才会输出日志 def file = new File(logFile) if(!file.exists()){ file.createNewFile(); //日志文件如果不存在,则新建一个 } def ln = System.getProperty('line.separator') //获取当前系统分隔符 file << getDateTime() message ln //将消息追加到日志文件中去,并追加一个换行分隔符 } } private String getDateTime() { DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS "); return df.format(new Date()); } }