我正在使用 java 注释处理器根据项目中的注释生成代码,并且运行良好。我正在使用
AbstractProcessor
,并像这样编写输出文件:
Filer filer = processingEnv.getFiler();
JavaFileObject sourceFile = filer.createSourceFile(fullyQualifiedName);
try (Writer writer = sourceFile.openWriter()) {
javaFile.writeTo(writer);
}
这会在
build/generated/sources/annotationProcessor/java/main
中生成 java 文件,非常适合该用例。
现在我想添加更多代码生成,但是这次我想基于
src/main/java
生成代码以用于测试,因此生成的源应该位于:
build/generated/sources/annotationProcessor/java/test
我在
ProcessingEnvironment
或 AbstractProcessor
上没有看到任何选项来确定将生成的代码写入哪个源集。使用 Java 的注释处理器生成测试代码的预期方式是什么?
注释处理器将根据添加的依赖配置运行,并贡献到相应的生成源输出。根据您问题中的信息,您可能使用
annotationProcessor
配置进行此设置,例如
dependencies {
annotationProcessor project(':my-processor')
}
相反,使用
testAnnotationProcessor
配置让处理器可以访问您的测试类,并写入测试输出:
dependencies {
testAnnotationProcessor project(':my-processor')
}