从gradle:can';t创建<;构建>;要素

从gradle:can';t创建<;构建>;要素,gradle,pom.xml,Gradle,Pom.xml,如何设置sourceDirectory,testSourceDirectory并在使用gradle maven插件的pomDSL创建的pom.xml中构建plugins 当我将build添加到我的DSL部分时,没有Closure,就可以了。。但是当我添加build{/*任何其他东西,比如实际的编译插件*/}时,它会给我以下错误: Execution failed for task ':mavenWrapper'. > No such property: _SCRIPT_CLASS_NAME

如何设置
sourceDirectory
testSourceDirectory
并在使用gradle maven插件的
pom
DSL创建的pom.xml中构建
plugins

当我将
build
添加到我的DSL部分时,没有
Closure
,就可以了。。但是当我添加
build{/*任何其他东西,比如实际的编译插件*/}
时,它会给我以下错误:

Execution failed for task ':mavenWrapper'.
> No such property: _SCRIPT_CLASS_NAME_ for class: org.apache.maven.model.Model
我猜gradle将
build
视为任务,而不是
org.sonatype.maven.polyglot.groovy.builder.ModelBuilder
生成的DSL动词

有没有办法强制将
构建
视为DSL的一部分?它可以是演员还是什么的

现在我正在通过使用
.withXml
解决这个问题,但是它非常冗长,而且不易维护

以下是我所做工作的简略版本:

task mavenWrapper {
    doLast {
        delete 'pom.xml', 'mvnw', 'mvnw.cmd'
        pom {
            project {
                packaging 'pom'
                repositories {
                    repository {
                        id 'spring-milestones'
                        name 'Spring Milestones'
                        url 'https://repo.spring.io/libs-milestone'
                        snapshots {
                            enabled 'false'
                        }
                    }
                }
                properties {
                    'kotlin.compiler.incremental' 'true'
                }
                /* ******** Problem is here
                build {
                    plugins {
                        plugin {
                            // ... etc. etc.
                        }
                    }
                }
                ******* */
                dependencyManagement {
                    dependencies {
                        dependency {
                            groupId 'org.jetbrains.kotlin'
                            artifactId 'kotlin-stdlib-jre8'
                            version "${kotlin_version}"
                            scope 'compile'
                        }
                    }
                }
            }
        }.withXml {
           // Workaround for the missing build { ... } section above.
           asNode().appendNode('build').appendNode('plugins')
           // etc. etc.
        }.writeTo("${projectDir}/pom.xml")
        exec {
            commandLine 'mvn', '-N', 'io.takari:maven:wrapper', '-Dmaven=3.5.0'
        }
    }
}

我还尝试了
委托.build
。没有变化。