2016-08-11 110 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

相關問題