使用Groovy构建DSL】的更多相关文章

DSL(Domain Specific Language)是针对某一领域,具有受限表达性的一种计算机程序设计语言. 常用于聚焦指定的领域或问题,这就要求 DSL 具备强大的表现力,同时在使用起来要简单.由于其使用简单的特性,DSL 通常不会像 Java,C++等语言将其应用于一般性的编程任务. 对于 Groovy 来说,一个伟大的 DSL 产物就是新一代构建工具--Gradle,接下来让我们看下有哪些特性来支撑Groovy方便的编写DSL: 一.原理 1.闭包 官方定义是"Groovy中的闭包是…
引子 我们用一段gradle的脚本做引子,理解这一段脚本与一般的groovy代码是怎么联系起来的 buildscript { repositories { jcenter() mavenLocal() //或者使用指定的本地maven 库 maven{ url "file://D:/repo" } } dependencies { classpath 'com.android.tools.build:gradle:1.2.3' } } DSL的定义 DSL(Domain Specifi…
一:DSL 概念 指的是用于一个特定领域的语言(功能领域.业务领域).在这个给出的概念中有 3个重点: 只用于一个特定领域,而非所有通用领域,比如 Java / C++就是用于通用领域,而不可被称为 DSL,同样也不可把 Groovy称为 DSL. 语言,必须经过编写后才可发挥它的功能.比如:五线谱编写后成乐谱: ANT编写用于编译: SVN命令编写后可对资源库进行操作: Shell编程: SQL编程: PL-SQL编程等等. 忽略具体的运行环境(媒介),可以是纸. XML文件.命令行. She…
场景 在进行Web服务端开发的时候,发布前通常需要测试一遍.对于一个大一点的项目,最好的办法是写个自动化测试程序. 以Groovy为例,写测试代码之前通常的有如下几个操作 引用相关的类库 import相关的类 对库不熟悉的时候你很可能得先把库的文档好好看一遍 对于你来说,你需要的可能仅仅是post,get等几个简单的操作而已,而上面的操作更是可能占用你整个开发过程的大部分时间. Orz....项目进度没跟上,又要加班了.... 要是有一种语言,本身自带post,get这样的函数那该多好啊,测试程…
原文链接:http://www.ibm.com/developerworks/cn/java/j-pg05199/ 代码示例: 构建xml文件: def static createXmlFile(){ def sw = new StringWriter(); def xml = new groovy.xml.MarkupBuilder(sw); xml.DataObject{ def i = 0, j = 0; while(i<6){ coal{ Color("#000000")…
我是做工作流项目的,工作流中各个模板引擎都需要要执行一个动态业务,这些动态业务有多种实现方式,最常用的就是用户自己写一段脚本文件,然后工作流引擎执行到这里的时候,运行这个脚本文件. 这个运行脚本文件的功能最初项目组是用ScriptEngineManager实现的.要求用户提供一个实现业务的jar,并写js脚本,脚本里动态地调用java内置在js引擎里的几个函数,这几个函数就是动态地调用jar里面的业务函数. 但是这样做太不方便,一是js无法调用java代码,只能预置java函数,或者通过预置的j…
在本文中将会涉及到: 使用 CliBuilder 来实现对命令行选项的支持,脚本执行时所需要的参数将通过命令行选项的方式传递. 使用 GroovyClassLoader 加载 Groovy class. 使用 AntBuilder 来构建 Jar 包. 开始之前 关于本文 也许您写了一些有趣或实用的 Groovy 脚本并希望与您的朋友分享,可是您并不想强迫他们安装 Groovy,所以您也许想要做一个小工具让您的朋友们能够用它编译您的 Groovy 脚本并且生成一个可执行的 Jar 包.本文将介绍…
1.Summary   从Android团队开始宣布放弃Eclipse转投Android Studio时,构建工具Gradle进入了Android开发者的视野.而随着热修复.插件化.编译时注解的流行,深入了解Gradle就变得很有必要了.那么什么是Gradle ? 2.About   Gradle是一个基于Ant构建工具,用Groovy DSL描述依赖关系的jar包.我们都知道早期的Android开发使用的是Eclipse,而Eclipse的构建工具使用的是Ant,用XML描述依赖关系,而XML…
DSL的本质是使用通用和专用语言构建领域的半成品: 实际上是构建了一个世界观.小宇宙的半成品: 这个半成品包含领域的基本要素.联系方式和基本运行规律: 开发者使用这个半成品平台进行开发能达到事半功倍.开发效率大大提高的效果. 使用这个dsl技术能够使用专业的技术进行直观的应用构建,这种构建基于声明式编程,减轻专业的计算机编程技术的负担. 所以开发一方面是自己构建DSL,另一方面是查找定位使用现成的dsl技术的过程.…
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://github.com/jiangxincode 知乎地址: https://www.zhihu.com/people/jiangxinnju 首先说明一下为什么要写这样一系列分析Groovy实现原理的博文.我之前在华为大数据部门曾维护过一份规则引擎的项目,该项目说白了就是一种DSL(Domain Sp…