Как получить все аннотации определенного типа из Java sourceSet в пользовательском плагине Gradle? - PullRequest
0 голосов
/ 30 августа 2018

Я создаю подключаемый модуль Gradle, который хочу использовать для чтения аннотаций определенных типов из компилируемого кода Java и выполнения некоторых действий на основе этих аннотаций. Как мне получить этот исходный код и получить от него аннотации?

Мой плагин написан на Java.

Конфигурация плагина:

import org.gradle.api.Plugin;
import org.gradle.api.Project;

public class GetAnnotationsPlugin implements Plugin<Project>
{
    @Override
    public void apply(Project project)
    {
        //Create our task
        project.getTasks().create(
            "getAnnotations",
            GetAnnotations.class,
            (task) ->
            {
                task.setName( "AnnotationProcessor" );
            }
        );
    }
}

Plugin:

import org.gradle.api.DefaultTask;
import org.gradle.api.Project;
import org.gradle.api.tasks.TaskAction;

public class GetAnnotations extends DefaultTask
{
    private String taskName;

    public String getTaskName()
    {
        return taskName;
    }

    public void setTaskName(String taskName)
    {
        this.taskName = taskName;
    }

    @TaskAction
    public void parseAnnotations()
    {
        System.out.println( getTaskName() );

        Project project = getProject();

        //Now get the source code

        //Load it (?)

        //Get the annotations
    }
}

Есть ли какая-нибудь библиотека для этого? Как бы получить только те классы, которые будут скомпилированы и упакованы?

...