【问题标题】:Gradle custom JavaCompile task for annotation processingGradle 自定义 JavaCompile 任务进行注解处理
【发布时间】:2020-07-12 11:15:03
【问题描述】:

我正在开发一个 gradle 插件,它注册了一个应该触发注释处理过程的 JavaCompile 任务。

这是我目前拥有的

private fun Project.runConfiguration(variants: DomainObjectSet<out BaseVariant>) {
        variants.all { variant ->
            // Assert Shuttle annotation processor is present or throw exception
            val processor = ShuttleProcessor::class.java.canonicalName ?: throw ShuttleCompilerNotFoundException()
            val packageName = variant.getPackageName()
            val task = tasks.register(
                    "generateShuttle${variant.name.capitalize()}Sources",
                    JavaCompile::class.java
            ) {
                it.group = TASK_GROUP
                it.source = variant.getSourceFolders(SourceKind.JAVA).first()
                it.options.annotationProcessorPath = variant.annotationProcessorConfiguration
                it.options.compilerArgs.addAll(listOf(
                        "-proc:only", "-implicit:none",
                        "-processor", processor
                ))
            }

            variant.registerJavaGeneratingTask(task.get())
        }
    }

在一个 android 项目中,当我应用我的插件并使用 gradle 运行任务时,到目前为止没有任何反应。我什至尝试在处理器的第一行抛出异常,但仍然没有成功。

我是否遗漏了什么或做错了什么?另外,我如何告诉任务它应该使用ShuttleProcessor 作为注释处理器。

我正在使用 kotlin 而不是 Groovy

谢谢。

【问题讨论】:

    标签: android gradle annotation-processing javacompiler


    【解决方案1】:

    我找到了解决问题的方法。 JavaCompile 任务必须知道我们使用的处理器在哪里。所以缺少的部分是这些行

    val classPath = variant.getCompileClasspath(null)
    

    我的任务配置应该包含这些更改

    classpath = classPath
    options.annotationProcessorPath = classPath
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-07
      • 2015-12-30
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多