2015-08-06 5 views
0

Я пытаюсь понять, как именно следующий Gradle скрипт выполняется:Gradle выполнение сценария семантика

task loadTestData(dependsOn: ['fakeTask', createSchema]) 

Я предполагаю, что:

  • loadTestData является вызов метода
  • dependsOn является именованным аргумент

Но на каком объекте находится мето d называется?

+0

нет названных аргументов в groovy. это карта («короткая» для '... Data ([dependsOn: ...])' – cfrick

+0

Кроме того, Gradle использует преобразования AST, поэтому иногда может не быть отношения 1-1 с окончательным кодом, который выполняется –

ответ

1

Фактически Task выполняется как часть рабочего процесса построения градиента. Задачи в градиенте не имеют параметров, но могут работать с переменными system/environment/build.

Тогда dependsOn, являющийся свойством задачи, получает задачи, от которых зависит заявленная заданная задача. В этом случае вы заявляете, что task loadTestData зависит от задач fakeTask и createSchema.

+0

Да, я это понимаю, но как именно это выполняется? Какая цепочка методов? – Crazyjavahacking

+0

Это основано на движке gradle для вычисления сценария выполнения и его выполнения. Обычно трассировка стека будет очень длинной (с ~ 100 вызовами) из-за вызова многих делегатов. Чтобы увидеть трассировку стека, вы можете просто добавить 'throw new exception()' в свою задачу и выполнить gradlew с флагом '--full-stacktrace'. –

Смежные вопросы