`

用groovy写一个文件copy的watch dog

 
阅读更多

很简单的功能,工作中需要,因为不够懒,每次都运行ant的target

 

后来开发web写js/html越来越多,根本不用编译的,再不写这样的工具。用动态语言都很容易实现

分享下

 

class DeployWatchDogTask extends TimerTask {
	String srcDir
	String distDir
	List extList = ['.js', '.css', '.html', '.tpl', '.ftl']

	def ant = new AntBuilder()

	public DeployWatchDogTask(String src, String dist){
		this.srcDir = src
		this.distDir = dist
	}

	private void copy(String pathRelative){
		String src = srcDir + pathRelative
		String dist = distDir + pathRelative

		ant.copy file: src, tofile: dist
	}

	private String getRelativePath(String str, pre){
		return str.substring(pre.size())
	}

	private boolean isExt(String name){
		int pos = name.lastIndexOf('.')
		return pos >= 0 && name.substring(pos) in extList
	}

	public void run(){
		def srcModifyTime = [:]
		def distModifyTime = [:]
		new File(srcDir).eachFileRecurse{
			if(it.isFile() && isExt(it.name))
				srcModifyTime[getRelativePath(it.absolutePath, srcDir)] = it.lastModified()
		}

		new File(distDir).eachFileRecurse{
			if(it.isFile() && isExt(it.name))
				distModifyTime[getRelativePath(it.absolutePath, distDir)] = it.lastModified()
		}

		srcModifyTime.each{k, v ->
			long l = distModifyTime[k]
			if(!l || l != v)
				copy(k)
		}
	}
}

def runTask = {src, dist, interval ->
	new Timer().schedule(new DeployWatchDogTask(src, dist), new Date(), interval);
}

String distPath = 'D:/ws/www'
runTask(new File('../').absolutePath, 
	new File(distPath).absolutePath, 1000 * 10)

 

 

 

 

0
0
分享到:
评论

相关推荐

    groovy创建xml文件

    groovy 创建xml,并生成xml文件的代码

    微服务项目中添加groovy文件技巧.docx

    通过这种方式,我们可以在微服务项目中充分利用Groovy的优势,同时避免了因直接使用.Groovy文件而导致的IDE兼容性问题。 总结来说,微服务项目中添加Groovy文件的关键在于正确配置IDE以支持Groovy,以及理解如何在...

    eclipse安装groovy插件的步骤

    ### Eclipse 安装 ...在 Eclipse 中集成 Groovy 可以为开发者提供一个集成了编辑、调试和运行等功能于一体的开发环境,极大地提高了开发效率。希望本文能帮助您更好地理解和掌握 Groovy 在 Eclipse 中的应用技巧。

    EditPlus3.12 540 SN及Groovy语法文件

    总结起来,EditPlus 3.12 540版结合Groovy语法文件,为Groovy开发者提供了一个强大的编码环境。虽然SN信息未给出,但了解如何配置和使用这些语法文件,对于提升开发体验有着显著的帮助。无论是修改代码高亮的颜色,...

    Java调用Groovy,实时动态加载数据库groovy脚本

    例如,我们可能会有一个MongoDB集合,其中每个文档包含一个字段存储Groovy脚本。Java代码会连接到MongoDB,找到这个文档,读取Groovy脚本,然后使用GroovyClassLoader进行加载和执行。 动态加载数据库中的Groovy...

    groovy脚本实现对数据库的增删改查

    这段代码创建了一个`Sql`对象,它是Groovy提供的一个便利类,用于简化JDBC操作。 2. **插入数据**(Create): 要向数据库插入数据,我们可以使用`executeUpdate`方法。例如,向名为`users`的表中插入一条记录: ...

    groovy 一个不错的文档 实现dsl

    标题与描述均指向了一个关于如何使用Groovy语言实现领域特定语言(Domain-Specific Language, DSL)的文档。这表明文档将介绍Groovy在DSL设计与实现方面的特性和优势。 #### 标签解读 - **标签**: "groovy for dsl...

    Java中使用Groovy的三种方式

    在Java开发中,Groovy是一种强大的、动态类型的脚本语言,它可以无缝地与Java代码集成,为开发者提供了更简洁、灵活的语法。本文将深入探讨在Java项目中使用Groovy的三种主要方式,并阐述它们各自的优势和应用场景。...

    groovy入门经典,groovyeclipse 插件

    Groovy是一种动态、灵活的编程语言,它是Java平台上的一个扩展,可以无缝集成到Java项目中。Groovy的语法简洁,支持面向对象编程、函数式编程,并提供了许多现代语言特性,如闭包和动态类型。这使得Groovy成为快速...

    Groovy轻松入门——Grails实战基础篇

    本篇文章将详细介绍如何搭建Grails开发环境以及如何创建一个简单的Grails应用程序。 ### 一、搭建Grails环境 在开始搭建Grails环境之前,我们首先需要确保已经安装了Java环境。因为Grails是基于Groovy的,而Groovy...

    groovy2.5.6安装文件

    Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。由于其运行在 JVM 上的特性,Groovy 可以...

    apache-groovy-sdk-4.0.1下载

    1. **groovy-all.jar**:这是一个包含了Groovy库所有模块的集合,你可以通过引入这个单一的jar文件来快速地在项目中使用Groovy。 2. **bin**目录:包含了一系列可执行脚本,如`groovy`, `groovyc`, 和 `groovysh`,...

    Groovy在Spring中的简单使用

    然后,定义一个 Groovy bean,例如 helloWorldService,使用 script-source 属性指定 Groovy 脚本的位置,并使用 property 元素设置该脚本的属性值。 在 Spring 中,可以设置默认的延时刷新时间,以便在 Groovy ...

    Groovy安装以及简单使用

    安装完成后,我们可以使用`groovysh`命令启动一个交互式的Groovy shell,或者通过`groovyConsole`启动Groovy脚本控制台,这为测试和调试Groovy代码提供了便利。此外,`groovy -version`命令可以验证Groovy是否正确...

    groovy-2.3.6-installer

    Groovy是一种动态、开源的编程语言,它是Java平台上的一个JVM(Java Virtual Machine)语言。Groovy结合了Python、Ruby和Perl等脚本语言的简洁性和灵活性,并且完全兼容Java,可以无缝地与Java代码集成。在"groovy-...

    groovy-all-2.4.8.jar

    Groovy All-2.4.8.jar 是一个包含Groovy库的集合包,主要用于简化Groovy环境的搭建和使用。这个版本(2.4.8)是Groovy在2.x系列中的一个稳定发行版,提供了一系列的功能和性能改进。 1. **Groovy简介** - Groovy是...

    groovy-all

    如果你的项目中使用了Groovy,这个库将提供一个完整的生态系统,帮助你充分利用Groovy的灵活性和效率。在Java项目中引入这个库,你可以轻松地集成Groovy脚本,提升开发效率,同时得益于其动态特性和强大的库支持。

    Groovy need not rails——介绍自己写的一个基于groovy的框架,Webx

    Webx是一个基于Groovy的框架,它旨在简化Web应用开发,提供类似于Rails的开发体验,但又保留了Groovy的灵活性和与Java的兼容性。 这个框架的核心特性可能包括: 1. **MVC结构**:Webx可能采用了模型-视图-控制器...

Global site tag (gtag.js) - Google Analytics