annotation-processing - 在我项目的源码包下生成java源码
问题描述
我有我的注释处理器:
public class MyAnnotationProcessor extends AbstractProcessor {
...
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
// Here I deal with the annotated element
...
// use JavaPoet to generate Java source file
TypeSpec generatedClazz = generate_code();
JavaFile javaFile = JavaFile.builder("com.my.foo", generatedClazz).build();
javaFile.writeTo(filer);
}
}
在上述process
回调中处理注释元素后,我使用JavaPoet生成 java 源代码并为代码创建 Java 文件。构建我的项目时,除了生成的 java 源代码文件默认转到build/generated/sources/myApp/com/my/foo
. 如何使生成的 Java 文件位于项目的源代码位置src/main/java/com/my/foo
?
我的 gradle 构建:
plugins {
id 'java'
}
group 'com.my.app'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testImplementation 'junit:junit:4.12'
implementation 'com.squareup:javapoet:1.11.1'
implementation 'com.google.guava:guava:28.1-jre'
}
解决方案
不确定 gradle,但使用 maven,您可以使用 maven-compiler-plugin 中的以下选项卡定义生成的源目录。
<generatedSourcesDirectory>
${project.basedir}/src/main/java
</generatedSourcesDirectory>
有关完整示例,请查看以下链接。
https://www.thetechnojournals.com/2019/12/annotation-processor-to-generate-dto.html
推荐阅读
- android - 小于 21 的 API 级别中 translationZ 的 XML 替代
- python - Keras ImageDataGenerator 不同的图像
- r - 游戏周围的预测间隔
- java - 如何在所有 Java 类中使用 RabbitTemplate
- bash - Bash自定义功能更改目录
- php - 向现有笔记添加标签?
- c# - aspx c#额外的分号出现在onclick事件上的内联if语句
- deeplink - Google Pay / Wallet 的深层链接网址是什么
- c# - 为 WebClient 关闭了基础连接
- ios - NSUnknownKeyException 即使定义了出口