从gradle创建maven包装器pom.xml:无法创建<build>元素

时间:2017-06-10 08:21:29

标签: gradle pom.xml

如何在我使用gradle maven-plugin的sourceDirectory DSL创建的pom.xml中设置testSourceDirectoryplugins和构建pom?< / p>

如果我在我的DSL部分添加build而没有Closure,那就没关系..但是当我添加build { /* anything else, like actual compile plugins */}时,它会给我这个错误:

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动词。

有没有办法强制build被视为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'
        }
    }
}

0 个答案:

没有答案