Как вызвать процессор аннотаций из плагина Gradle - PullRequest
0 голосов
/ 27 марта 2020

В настоящее время я работаю над плагином Gradle custon, который должен проанализировать мой root проект для определения конкретных c конфигураций в каждом подпроекте и затем сгенерировать некоторый исходный код kotlin в каталоге сборки. Я не могу придумать способ вызвать мой процессор аннотаций из моего подключаемого модуля Gradle, в котором есть специальная задача для этого вопроса.

Есть идеи, как этого добиться? Любой ресурс / учебник / документация также приветствуется.

Заранее спасибо и будьте в безопасности.

1 Ответ

0 голосов
/ 03 апреля 2020

После долгого поиска в Google и, в основном, попыток и неудач, я наконец нашел решение своего вопроса. Вот моя конфигурация задачи.

По сути, мы должны предоставить classpath процессора аннотаций в качестве конфигурации проекта. В моем случае я добавил этот блок в build.gradle проекта

allprojects {
    configurations {
        myProcessor //pick any name!!!
    }
}

, а затем в качестве зависимости в приложении build.gradle

dependencies {
    myProcessor "PATH_TO_MY_PROCESSOR_JAR" //or maven dependency if it's uploaded to maven central
}
tasks.register(
"myTaskName",
JavaCompile::class.java
) {
    compiler ->
    with(compiler.options) {
        isFork = true
        isIncremental = true
    }
    with(compiler) {
        group = shuttle.plugin.ShuttlePlugin.TASK_GROUP
        destinationDir = outputDir
        classpath = variant.getCompileClasspath(null)
        options.annotationProcessorPath = configurations.getByName("myProcessor") //this is the missing piece!!
        source = files(projectDir.resolve("src/main/java")).asFileTree
    }
}

Однако эта задача будет только компилировать Java классов только и не kotlin. Любая идея, как исправить это поведение, зная, что мой плагин предназначен только для приложений android, поэтому у меня нет прямого доступа к kotlinCompile заданию gradle по умолчанию?

...