用于自定义语言的Gradle插件

时间:2015-10-12 14:17:26

标签: gradle build.gradle gradle-plugin

我有自定义语言(让我们说它是MyLang,但它可以是任何语言),我想为它制作一个插件。该插件需要

  • 能够识别DSL
  • 给出的语言的源集
  • 能够使用可执行文件(编译器)
  • 编译它们

我能够创建一个带有编译任务的插件(空的),并使用@LanguageType注释一个函数,将语言名称设置为" mylang"。

我如何修改插件,以便能够使用像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) {
        }
    }
  }

0 个答案:

没有答案