Как сгенерировать импорт во время компиляции?

Я сейчас делаю это с реализацией com.sun.source.util.Plugin, который имеет этот метод для добавления следующего выражения в раздел импорта import java.util.List;:

private void generateImport(CompilationUnitTree compilationUnitTree) {
        var jcCompilationUnit = (JCTree.JCCompilationUnit) compilationUnitTree;
        List<JCTree> imports = jcCompilationUnit.defs.stream()
            .filter(def -> def.hasTag(JCTree.Tag.IMPORT))
            .collect(Collectors.toList());
        JCTree.JCImport classImport = treeMaker.Import(
            treeMaker.Select(
                treeMaker.Ident(names.fromString("java.util")),
                names.fromString("List")
            ),
            false
        );
        imports.add(classImport);
        jcCompilationUnit.defs = List.from(imports);
    }

имена - Экземплярcom.sun.tools.javac.util.Names& treeMaker - Экземплярcom.sun.tools.javac.tree.TreeMaker

Я добавил свой плагин как зависимость к проекту с одним единственным A.java, а после mvn package сделано, A.class отсутствует, у меня просто пустой target каталог.

Похоже, мое решение неверно. Итак, вопрос: как мне добавитьimport <something> к A.java во время компиляции?

PS Искал способы добавить импорт в такие проекты как Lombok, MapStruct, Spoon и другие менее известные, но ничего подобного не нашел.

0 ответов

Другие вопросы по тегам