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")
}
我正在尝试使用gradle maven插件创建一个pom.xml文件。它必须引用为中央依赖性报告设计的maven插件。现在它成功创建了包含所有依赖项,插件存储库信息和配置文件信息的pom.xml文件。但是,如果构建部分未被注释,我会得到一个错误:
> No such property: _SCRIPT_CLASS_NAME_ for class: org.apache.maven.model.
如果我尝试像
这样简单的事情task writeNewPom {
pom {
project {
build {
}
}
}
}
然后我得到同样的错误。似乎gradle不会将构建识别为有效标识符。我只是希望有一个比通过groovy手动编辑xml更优雅的解决方案。我能找到的关于此的唯一文档是Gradle docs Chap 53
答案 0 :(得分:6)
这是因为project {...}
闭包委托给ModelBuilder
的实例,该实例扩展了已定义名为FactoryBuilderSupport
的方法的Groovy的build
类。因此,不是配置Maven build
对象的Model
属性,而是调用预先存在的build
方法。
为了解决这个问题,我会使用withXml {...}
来配置你的那部分。
pom {
project {
// other non-<build> configuration
}
}.withXml {
asNode().appendNode('build').appendNode('plugins').appendNode('plugin').with {
appendNode('groupId', 'GROUP_ID')
}
}.writeTo('pom.xml')
答案 1 :(得分:0)
这是一个更详细的例子:
.withXml
{
asNode().appendNode('build').appendNode('plugins').with
{
with
{
appendNode('plugin')
.with
{
appendNode('groupId', 'groupId1')
appendNode('artifactId', 'artifactId1')
appendNode('version', 'version1')
}
}
with
{
appendNode('plugin')
.with{
appendNode('groupId', 'groupId2')
appendNode('artifactId', 'artifactId2')
appendNode('version', 'version2')
}
}
}
}
.writeTo("pom.xml")