После долгого поиска в 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 по умолчанию?