Как сгенерировать импорт во время компиляции?
Я сейчас делаю это с реализацией 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 и другие менее известные, но ничего подобного не нашел.