如何在Gradle的eclipse任务的类路径中添加注释

时间:2014-09-19 16:17:55

标签: xml eclipse groovy gradle

由于Gradle eclipse插件创建了一个带有$ HOME绝对路径的.classpath文件,我不希望别人将它提交给VCS。我已经有一个钩子,它将拒绝具有文本" dontCommit"的提交。我想在生成的.classpath XML文件中添加注释。

我在我的eclipse.classpath.withXml关闭中尝试了这些并没有成功:

def root = it.asNode()
root.children()[0].appendNode(org.w3c.dom.Node.COMMENT_NODE, "dontCommit")

这使用枚举中COMMENT_NODE的位置作为元素名称,例如<8>dontCommit</8>

it.asString() =~ "/(<classpath>)/<classpath> <!-- dontCommit -->/"

这很难看(使用XML上的正则表达式)并且不起作用;可能该字符串未映射回XML。 (不能责怪它......)

root.children()[0].appendNode("<!--", "dontCommit")

这会创建<<!-->dontCommit</<!-->,即无效的XML。

http://groovy.codehaus.org/api/groovy/util/Node.html#plus%28groovy.lang.Closure%29说我可以使用Closure和构建器样式表示法,但是当我使用mkp前缀时,我得到编译器错误。

root.children()[0].plus {
    mkp.comment("dontCommit")
}

获取No such property: mkp for class: org.gradle.api.internal.xml.XmlTransformer$XmlProviderImpl

root.classpathentry.add(0, {
    mkp.comment("dontCommit)
})

编译,但似乎没有做任何事情。

如何添加评论?

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方法:Eclipse可以方便地忽略未知标记,因此我可以在虚拟节点中添加我的标记,如下所示:

it.asNode().appendNode("eclipse-ignore-this", "dontCommit")

(添加检查表明这样的标记不存在但是没有任何理由不膨胀文件。)