2016-03-09 2 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 
} 

Что такое точное значение, и, где это документально? Я не мог найти его в документации по градиенту, а with в groovy (http://groovy-lang.org/style-guide.html#_using_with_for_repeated_operations_on_the_same_bean) кажется другим.

ответ

2

В вашем случае вы вызываете метод with() класса Jar. (См самую нижнюю часть Jar DSL documentation и Jar API documentation)

Добавляет данные функции, как ребенок этой спецификации.

Таким образом, это не with() -метод Groovy.

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

У вас есть идея, когда документ 'with' задокументирован? Я пытаюсь понять, как изучать град, но для нескольких вещей я не могу найти документацию, ... – Edward

+0

'with' также задокументирована в вашей ссылке: http://groovy-lang.org/style-guide .html # _using_with_for_repeated_operations_on_the_same_bean. Дело в том, что 'with' принимает замыкание в качестве аргумента и запускает его. Это то же самое поведение, которое вы видите в своей задаче о градиенте. Вы можете сделать почти все в этом закрытии – injecteer

+0

Но не является ли 'jar' ссылкой на экземпляр класса' Jar', который был сгенерирован Java-плагином? Как это может быть закрытие? – Edward