我有一种自定义语言(假设它是 MyLang,但它可以是任何语言),我想为它制作一个插件。该插件需要
- 能够识别 DSL 给出的语言的源集
- 能够使用可执行文件(编译器)编译它们
我能够创建一个带有编译任务(还为空)的插件,并使用@LanguageType 将语言名称设置为“mylang”来注释一个函数。
如何修改插件以使用 DSL(如 sourceSets { mylang { ... } })从 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) {
}
}
}