#groovy #build.gradle
#заводной #сборка.сортировка
Вопрос:
Я пытаюсь изменить build.gradle
файл существующего проекта, который был передан мне. Я новичок в gradle и groovy, поэтому я пытаюсь точно расшифровать, что он делает. Документация gradle и groovy мне не очень помогает. Вот пример:
apply plugin: "java" apply plugin: 'idea' apply plugin: 'war' apply plugin: 'org.springframework.boot' apply plugin: 'org.flywaydb.flyway' apply plugin: "net.saliman.cobertura" apply plugin: 'org.sonarqube' apply plugin: 'org.owasp.dependencycheck' apply plugin: 'maven' apply plugin: 'maven-publish' apply plugin: 'io.spring.dependency-management' // lots of code here.... task('devRun') { doLast { bootRun { systemProperty "spring.profiles.active", "local, dev" if (System.getenv('DEBUG') == 'true') { jvmArgs '-Xdebug', '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5081' } } } }
Для меня это похоже на несколько определений вложенного замыкания, что означает task
внешнее замыкание, doLast
внутреннее замыкание, bootRun
дальнейшее внутреннее замыкание. Но разве заводные замыкания формы {statement...}
не label {statement...}
являются таковыми . Также не являются ли все эти ключевые слова (task, doLast, bootRun) ключевыми словами или предопределенными задачами других плагинов? Если это так, то что на самом деле означает сказать doLast {statement...}
или bootRun {statement...}
? это похоже на переопределение предопределенного doLast
? и то же самое для bootRun
. Я не нахожу в документации ни одного примера, который был бы похож на этот фрагмент кода. Не мог бы кто-нибудь объяснить, пожалуйста, какие правила синтаксиса groovy применяются здесь?
Комментарии:
1.
x {}
это сокращение отx({})
или дажеx() {}
. Родители (в основном опциональные), и окончательному аргументу закрытия разрешается выходить за пределы родителей.2. ладно, думаю, я понял. чтобы убедиться, что я понимаю, в случае
task
, если я интерпретирую, что предопределенныйtask
метод вызывается с аргументами «devRun», а 2-й аргумент-это замыкание, которое определено встроенным и которое вызываетdoLast
? Спасибо