尽管在META-INF / services中输入,但未调用Intellij插件自定义编译器

问题描述 投票:0回答:1

我正在尝试创建一个intellij插件来编译Latex。我正在关注this documentation以实现External Build API。但是,当我按下“构建项目”按钮时,不调用扩展LatexBuilderServiceBuilderService类。如何确保正确调用我的LatexBuilderService

src/main/resources/META-INF/services下我创建了一个名为org.jetbrains.jps.incremental.BuilderService的文件,其中包含我的BuilderService.的完全限定名称。具体来说,它有文本:build.builders.LatexBuilderService

我的extensionsplugin.xml部分看起来像这样

<extensions defaultExtensionNs="com.intellij">
    <compiler.buildTargetScopeProvider implementation="build.scope.LatexBuildScopeProvider"/>
    <compileServer.plugin classpath ="/home/philip/IdeaProjects/latex-compile-proof-of-concept/build/libs/latex-compile-1.0-SNAPSHOT.jar" />
</extensions>

并且已经用打印语句确认,每当按下“构建项目”按钮时,就会调用扩展getBuildTargetScopesLatexBuildScopeProvider类中的BuildTargetScopeProvider

我扩展了课程

  • LatexBuilder延伸TargetBuilder<LatexBuildRootDescriptor, LatexBuildTarget>
  • LatexBuilderService延伸BuilderService
  • qazxsw poi扩展了qazxsw poi
  • LatexBuildScopeProvider延伸BuildTargetScopeProvider
  • LatexBuildRootDescriptor延伸BuildRootDescriptor
  • LatexBuildTarget延伸BuildTarget<LatexBuildRootDescriptor>

这是我的LatexBuildTargetType代码

BuildTargetType<LatexBuildTarget>

和我的LatexBuildScopeProvider代码当我按下“构建项目”按钮时,没有触发打印语句或异常。

public class LatexBuildScopeProvider extends BuildTargetScopeProvider {
    @NotNull
    @Override
    public List<TargetTypeBuildScope> getBuildTargetScopes(@NotNull CompileScope baseScope,
                                                           @NotNull Project project,
                                                           boolean forceBuild) {
        System.out.println("getBuildTargetScopes was called");

        Stream<Module> modules = Arrays.stream(baseScope.getAffectedModules());
        List<String> moduleIds = modules.map(Module::getName).collect(Collectors.toList());

        TargetTypeBuildScope scope = CmdlineProtoUtil.createTargetsScope(
                LatexBuildTargetType.instance.getTypeId(),
                moduleIds, // Sometimes referred to as module names in other plugins
                forceBuild);
        return Collections.singletonList(scope);
    }
}
java intellij-idea intellij-plugin
1个回答
0
投票

插件开发和IntelliJ IDEA API问题的最佳位置是LatexBuilderService.

你的问题是public class LatexBuilderService extends BuilderService { @NotNull @Override public List<LatexBuildTargetType> getTargetTypes() { System.out.println("calling getTargetTypes"); return Collections.singletonList(LatexBuildTargetType.instance); } @NotNull @Override public List<LatexBuilder> createBuilders() { System.out.println("calling createBuilders"); return Collections.singletonList(new LatexBuilder()); } @NotNull @Override public List<? extends ModuleLevelBuilder> createModuleLevelBuilders() { throw new NotImplementedException("createModuleLevelBuilders"); } } 那里,我会在论坛继续讨论,因为在这种情况下更方便。

© www.soinside.com 2019 - 2024. All rights reserved.