2016-08-11 111 views
0

我最近开始学习Gradle和Groovy。我有一些关于build.gradle语法的问题。'jar'语法的含义是什么?

据我所知基本上构建脚本文件使用groovy脚本。 例如,

task hello { 
    println 'hi!' 
} 

这句法等于

task('hello', {-> println('hi!');}); 

所以,这是什么语法等于?

jar {// this part. i couldn't figure it out. 
    manifest { 
     attributes 'Title': 'something' 
    } 
    /* this will be 
    * 
    * manifest(['Title': 'something']); 
    */ 

    // blah blah 
} 
+0

这意味着“使用包含”标题“属性的清单创建JAR文件。 –

+1

您究竟在问什么?在Groovy中DSL如何工作? –

+0

@DaveNewton如果我将这种语法转换为java样式,它的外观如何像? – RedLaboratory

回答

1

Java代码可能看起来像(见Jar API DocsManifest API Docs

Jar jar = project.getTaskByName('jar') 
jar.configure((Jar task) -> { 
    task.manifest((Manifest manifest) -> { 
     Map<String,Object> map = new HashMap<>(); 
     map.put('Title', 'something'); 
     manifest.attributes(map); 
    }); 
}); 

一般情况下,Groovy是只是衬垫方法的语法糖。

+0

实际上我想要的不是这个,但是谢谢。我想要完整的代码语法。我的意思是,groovy可以省略一些代码,如分号,paren等,所以我想要一个不被忽略的代码来理解脚本实际像我在我的问题中写的任务方法那样工作 – RedLaboratory

+0

好的,那样的话,缺少的部分是'methodMissing('jar',{...})',参见例如http://mrhaki.blogspot.cz/2009/11 /groovy-goodness-create-dynamic-methods.html – musketyr

+0

比“jar {}”用来调用“jar”方法,并且实际上没有“jar”方法,并且在某处会有实现'methodMissing'。我对吗? – RedLaboratory

相关问题