Gradle构建-指定包路径注释处理器filer.createSourceFile()

时间:2019-07-15 13:21:52

标签: java eclipse gradle annotation-processing

我有一个自定义注释处理器,它创建了几个类。在eclipse构建中可以正常工作,它会在“ .apt_generation”文件夹下生成具有完整包结构的Java文件。

String implName = "foo/bar/impl/" + annotatedElement.getSimpleName() + "Impl";
JavaFileObject jfo = filer.createSourceFile(implName, annotatedElement);
Writer writer = jfo.openWriter();
writer.write("package foo.bar.impl;\n\n");
writer.write("public class CustomImpl {}\n");
writer.close();

但是,这不适用于gradle build。使用Gradle进行构建时遇到错误。

Illegal name foo/bar/impl/CustomImpl javax.annotation.processing.FilerException: Illegal name foo/bar/impl/CustomImpl at com.sun.tools.javac.processing.JavacFiler.checkName(JavacFiler.java:495) at com.sun.tools.javac.processing.JavacFiler.checkNameAndExistence(JavacFiler.java:517) at com.sun.tools.javac.processing.JavacFiler.createSourceOrClassFile(JavacFiler.java:396) at com.sun.tools.javac.processing.JavacFiler.createSourceFile(JavacFiler.java:378)

有趣的是,如果我们从文件名中删除包路径,那么Gradle构建就可以了。但是在不考虑包结构的情况下在一个文件夹中创建所有文件。

有任何想法为什么Gradle构建会如此?

0 个答案:

没有答案