什么是gradle中“with”的含义

时间:2016-03-09 10:21:48

标签: gradle groovy build.gradle

在答案https://stackoverflow.com/a/35879150中,最后一行有一个with

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

确切含义是什么,它在哪里记录?我在gradle文档中找不到它,并且groovy中的withhttp://groovy-lang.org/style-guide.html#_using_with_for_repeated_operations_on_the_same_bean)似乎有所不同。

2 个答案:

答案 0 :(得分:3)

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

的最底部
  

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

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

答案 1 :(得分: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
    }
  }
}