Sources Plugin
NAME
SourcesPlugin и extension sources.
SYNOPSIS
// Обычно подключается транзитивно через org.implab.gradle-variants-sources sources { register('main') { declareOutputs('compiled', 'typings') sets { ts { srcDir 'src/main/ts' } js { srcDir 'src/main/js' } } } }
DESCRIPTION
SourcesPlugin регистрирует extension sources типа
NamedDomainObjectContainer<GenericSourceSet>.
GenericSourceSet — это автономный source bundle с четким контрактом outputs.
sourceSetDir
Базовый каталог набора. Конвенция по умолчанию: src/<name>.
outputsDir
Базовый каталог результатов набора. Конвенция по умолчанию: build/<name>.
sets
Контейнер SourceDirectorySet внутри GenericSourceSet. Используется для
логического разделения подпапок (например ts, js, typings).
outputs contract
Outputs именованные и должны быть объявлены заранее:
declareOutputs(...)— декларация доступных output keys;output(name)— доступ кConfigurableFileCollectionдля output key;registerOutput(...)— регистрация output из файлов или task provider.
Такой контракт упрощает wiring задач через inputs/outputs без ручного
dependsOn.
API
SourcesPlugin
apply(Project)— добавляет extensionsourcesв проект.getSourcesExtension(Project)— возвращает контейнерGenericSourceSet.
GenericSourceSet
getSourceSetDir()— root directory источников набора.getOutputsDir()— root directory результатов набора.getSets()— контейнер поднаборовSourceDirectorySet.declareOutputs(...)— объявляет разрешенные output names.output(name)— возвращаетFileCollectionдля конкретного output.registerOutput(name, files...)— добавляет файлы в output.registerOutput(name, task, mapper)— связывает output с task provider.getAllOutputs()— агрегированныйFileCollectionвсех outputs.getAllSourceDirectories()— агрегированныйFileCollectionвсех source dirs.
KEY CLASSES
SourcesPlugin— регистрация extensionsources.GenericSourceSet— модель источников и outputs.
NOTES
- Обращение к
output(name)без предварительногоdeclareOutputs(name)приводит к ошибке валидации. - Плагин
sourcesсейчас без marker id.
