使用Android gradle插件dsl从gradle任务设置参数

使用Android gradle插件dsl从gradle任务设置参数,android,kotlin,gradle,annotation-processing,Android,Kotlin,Gradle,Annotation Processing,我正在为android开发一个gradle插件,该插件必须以编程方式为注释处理器设置参数“-AoutputDir=my.path.to.output.dir” 因此,从gradle插件apply()函数中,我引用了所有子项目,并使用 private fun addAnnotationProcessorOptions(rootProject: Project, outDir: File) { rootProject.subprojects { it.also

我正在为android开发一个gradle插件,该插件必须以编程方式为注释处理器设置参数
“-AoutputDir=my.path.to.output.dir”

因此,从gradle插件
apply()
函数中,我引用了所有子项目,并使用

private fun addAnnotationProcessorOptions(rootProject: Project, outDir: File) {
        rootProject.subprojects {
            it.also { project ->
                project.afterEvaluate {prj->
                    prj.plugins.all { plugin ->
                        when (plugin) {
                            is AppPlugin -> {
                                prj.extensions[AppExtension::class].run {
                                    defaultConfig.javaCompileOptions.annotationProcessorOptions.arguments(
                                            mapOf("outdir" to outDir.absolutePath)
                                    )
                                }
                            }

                            is LibraryPlugin -> {
                                prj.extensions[LibraryExtension::class].run {
                                    defaultConfig.javaCompileOptions.annotationProcessorOptions.arguments(
                                            mapOf("outdir" to outDir.absolutePath)
                                    )
                                }
                            }
                        }
                    }
                }
            }
        }
    }
这与我在每个子项目的构建脚本中所做的相同

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"


    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles 'consumer-rules.pro'
        //HERE is the same call to the same dsl object
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = ['outdir': 'path.to.output']
            }
        }
    }
当我试图在注释处理器中获取参数
outdir
时,后者抛出一个异常,抱怨找不到参数
outdir
。但是,如果我从构建脚本中设置参数
outdir
,它将毫无问题地获取它

我不能从构建脚本中设置参数,因为我的用例指示此配置应该以编程方式完成

PS:我使用了
Project.beforevaluate{}
Project.beforevaluate{}
闭包,但仍然没有成功

知道发生了什么事吗?我的dsl配置被覆盖了吗?是否可以通过代码而不是构建脚本进行设置

提前谢谢