从gradle导出Maven pom.xml文件时无法注入构建块

Bri*_*her 0 gradle maven-plugin pom.xml maven

task writeNewPom {
    pom {
        project {
            /*
            build {
                plugins {
                    plugin {
                        groupId 'GROUP_ID'
                        artifactId 'maven-ipcentral-plugin'
                        version '4.7'
                        executions {}
                        configuration {
                            url "http://CENTRAL_REPORTING_SERVER"
                            logfileprefix "test"
                            ipcProject = true
                            businessUnit "FOUR_DIGIT_CODE"
                            componentEditorsGrouper "ccp-dev"
                            assetEditorsGrouper "ccp-dev"
                            username "USERNAME"
                        }
                    }
                }
            }
            */
            pluginRepositories {
                pluginRepository {
                    id 'ipcentral-snapshots'
                    name 'IPCentral Snapshot Repository'
                    url 'http://PLUGIN_SOURCE/'
                    snapshots {
                        enabled = false
                    }
                    releases {
                        enabled = true
                    }
                }
            }

            profiles {
                profile {
                    id 'inject-cec-credentials'
                    activation {
                        activeByDefault = true
                    }
                    properties {
                        username = "USERNAME"
                    }
                }
            }
        }
    }.writeTo("ipcentral/pom.xml")
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用gradle maven插件创建一个pom.xml文件.它必须引用为中央依赖性报告设计的maven插件.现在它成功创建了包含所有依赖项,插件存储库信息和配置文件信息的pom.xml文件.但是,如果构建部分未被注释,我会得到一个错误:

> No such property: _SCRIPT_CLASS_NAME_ for class: org.apache.maven.model.
Run Code Online (Sandbox Code Playgroud)

如果我尝试一些简单的事情

task writeNewPom {
    pom {
        project {
            build {
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我得到了同样的错误.似乎gradle不会将构建识别为有效标识符.我只是希望有一个比通过groovy手动编辑xml更优雅的解决方案.我能找到的唯一文档就是Gradle docs第53章

Mar*_*ira 6

这是因为project {...}闭包委托给一个实例ModelBuilder扩展了Groovy的FactoryBuilderSupport类,该类已经定义了一个名为的方法build.因此,不是配置buildMaven Model对象的属性,而是build调用预先存在的方法.

为了解决这个问题,我将使用withXml {...}你的pom配置.

pom {
    project {
        // other non-<build> configuration
    }
}.withXml {
    asNode().appendNode('build').appendNode('plugins').appendNode('plugin').with {
        appendNode('groupId', 'GROUP_ID')
    }
}.writeTo('pom.xml')
Run Code Online (Sandbox Code Playgroud)