2016-03-09 40 views
2

在回答https://stackoverflow.com/a/35879150意义没有在最后一行with什么“与”在gradle这个

task gen (type: Jar) { 
    description "Generates JAR without version number." 
    archiveName = filename + ".jar" 
    manifest {attributes 'Main-Class': mainFile} 
    with jar 
} 

什么确切含义,以及它在哪儿记录?我无法在Gradle文档中找到它,并且groovy中的with似乎有所不同。

回答

2

在你的情况下,你正在调用with() - Jar类的方法。 (请参见Jar DSL documentationJar API documentation的最下面)

将给定的规格添加为此规格的子规格。

所以,这不是Groovy的with() - 方法。

1

对于这种情况下with你似乎调用一个名为jar关闭:

在运行时(当构造器被调用)
jar { 
    baseName filename 
    manifest { 
     attributes 'Main-Class': mainFile 
    } 
} 

task gen (type: Jar) { 
    //.... 
    with jar 
} 

它会被转换为:

task gen (type: Jar) { 
    //.... 

    jar { 
    baseName filename 
    manifest { 
     attributes 'Main-Class': mainFile 
    } 
    } 
} 
+0

你有一个想法,有'带'记录?我试图弄清楚如何学习gradle,但对于几件事我找不到文档,... – Edward

+0

'with'也记录在您的链接中:http://groovy-lang.org/style-guide的.html#_using_with_for_repeated_operations_on_the_same_bean。关键是,'with'将闭包作为参数并运行它。这与您在Gradle任务中看到的行为完全相同。你可以在关闭时做几乎所有的事情 – injecteer

+0

但是'jar'不是对Java Plugin生成的'Jar'类的实例的引用吗?那么它怎么会是封闭的? – Edward