由于插件的名称空间污染,Gradle忽略自定义POM中的元素

时间:2017-11-17 06:18:02

标签: java maven gradle pom.xml

我正在尝试自定义我的pom,如this thread所示。我的尝试看起来像这样:

def pomConfig = {
    // ...
    licenses {
        license {
            name "LGPL 3.0"
            url "https://gnu.org/licenses/lgpl-3.0"
            distribution 'repo'
        }
    }
}
publishing {
   publications {
        maven(MavenPublication) {
            from components.java
            pom.withXml {
                asNode().children().last() + pomConfig
            }
        }
    }
}

但是,这在(无效)pom中显示如下:

<licenses>
    <name>LGPL 3.0</name>
    <url>https://gnu.org/licenses/lgpl-3.0</url>
    <distribution>repo</distribution>
</licenses>

当我将gradle中的名称从license更改为其他内容时,它就像魅力一样。例如。当我将其重命名为liecense时,我得到以下xml:

<licenses>
    <liecense>
        <name>LGPL 3.0</name>
        <url>https://gnu.org/licenses/lgpl-3.0</url>
        <distribution>repo</distribution>
    </liecense>
</licenses>

我尝试使用gradle 4.2.1和gradle 4.3.1,两者都有相同的行为。

如何让gradle添加license xml元素?

更新

我发现我使用的插件具有license {}块内的配置。禁用插件可以解决问题。但是我想知道是否有任何方法让插件处于活动状态且pomConfig同时工作?我尝试编写"license" {代替,但它没有解决问题。定义pomConfig后应用插件也没有用。

0 个答案:

没有答案