カスタム言語 (MyLang としましょうが、どの言語でもかまいません) があり、そのためのプラグインを作成したいと考えています。プラグインは
- DSL で指定された言語のソースセットを認識できる
- 実行可能ファイル(コンパイラ)を使用してそれらをコンパイルできる
コンパイル タスク (まだ空) でプラグインを作成し、言語名を「mylang」に設定する @LanguageType で関数に注釈を付けることができました。
sourceSets { mylang { ... } } のような DSL を使用して build.gradle ファイルからソースセットを追加できるようにプラグインを変更するにはどうすればよいですか?
ソース セットのファイルをビルドできるようにビルド タスクを変更するにはどうすればよいですか?
class MylangBuildPlugin implements Plugin<Project> {
static final String COMPILE_TASK_NAME = 'compileMylang'
void apply(Project project) {
project.getPluginManager().apply(ComponentModelBasePlugin.class);
createCompileTask(project)
}
@LanguageType
void registerLanguage(LanguageTypeBuilder<BaseLanguageSourceSet> builder) {
builder.setLanguageName("mylang");
builder.defaultImplementation(BaseLanguageSourceSet.class);
}
private void createCompileTask(Project project) {
project.task(COMPILE_TASK_NAME) {
}
}
}