我目前正在使用 的实现来执行此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和其他不太知名的项目中添加导入的方法,但我没有找到类似的东西。