Чтобы полностью понять этот код, вы должны прочитать Gradle DSL (язык, специфичный для домена)
SourceSet представляет логическую группу источника и ресурсов Java.Внутри блока sourceSets {} определен новый SourceSet swagger
.
В приведенной выше ссылке на определение SourceSet вы заметите, что, поскольку swagger
теперь является SourceSet, он имеетсвойство output, которое предоставляет все выходные каталоги этого SourceSet: таким образом, вы можете вызвать swagger.output
В каждом проекте Gradle Java есть предположение, что существуют основные источники и тестовые источники.Предположение делается плагином java
, который необходим Gradle для обработки Java.(Этот макет происходит от Стандартного макета каталога .) С помощью main{}
и test{}
вы настраиваете эти исходные наборы.Конечно, у вас может быть больше исходных наборов.Что делают compileClasspath += swagger.output
и runtimeClasspath += swagger.output
, так это добавление сгенерированного swagger кода (или любого вывода swagger в целом) в их каталог classpath времени компиляции и выполнения.Поскольку swagger выполняет генерацию кода, это ожидаемое поведение.
Задача представляет собой один атомарный элементчасть работы для сборки, такая как компиляция классов или создание javadoc.
Упомянутый выше плагин java при создании нового SourceSet также создает несколько связанных задач :compileSourceSetJava
, processSourceSetResources
и sourceSetClasses
(замена SourceSet именем каждого SourceSet).Вот что представляют собой compileSwaggerJava
, swaggerClasses
, сгенерированные задачи из swagger
SourceSet.
Для стандартных наборов источников эти равны :
для основного набора источников: compileJava
, processResources
, classes
и
для тестового набора источников: compileTestJava
, processTestResources
, testClasses
Задача может зависеть от других задач или может быть запланирована на выполнение всегда после другой задачи.
Это настраивается через свойства задачи .Одним из них является свойство dependsOn
, которое объясняет этот последний блок предоставленного вами кода.(Примечание: задача generateApi в последнем блоке кода определена в ссылке, которую разделяет ОП в вопросе)