首页 > 解决方案 > 在我项目的源码包下生成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'
}

标签: annotation-processingjavapoetannotation-processor

解决方案


不确定 gradle,但使用 maven,您可以使用 maven-compiler-plugin 中的以下选项卡定义生成的源目录。

<generatedSourcesDirectory>
     ${project.basedir}/src/main/java
</generatedSourcesDirectory>

有关完整示例,请查看以下链接。

https://www.thetechnojournals.com/2019/12/annotation-processor-to-generate-dto.html


推荐阅读