xml - 如何向 Gradle 的 eclipse 任务的类路径添加注释

标签 xml eclipse groovy gradle

由于 Gradle eclipse 插件创建了一个带有 $HOME 绝对路径的 .classpath 文件,我不希望人们将它提交给 VCS。我已经有一个钩子(Hook)可以拒绝带有“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说我可以使用闭包和生成器样式表示法,但是当我使用 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)
})

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

如何添加该评论?

最佳答案

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

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

(添加检查这样的标记是否不存在,不会无缘无故地膨胀文件。)

关于xml - 如何向 Gradle 的 eclipse 任务的类路径添加注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25938288/

相关文章:

Python lxml.etree - 从字符串解析 XML 还是直接从链接解析 XML 更有效?

javascript - 如何将 <span> 标记插入从 XML 提要生成的文本字符串的中间?

java - 如何在 Java 中格式化 XML 模式验证错误消息?

java - 平板电脑上的 ListView

android - 什么是 "all"迭代器?

Android NumberPicker 最大 : Set min,,默认来自 XML

eclipse - osgi.os 属性的 "win32"与 "win64"

java - Robotium 测试用例作为一种方法

grails - 在JBoss6上部署Grails 1.3.2 War时出错

java - 将数组 ["null"、 "0"、 "1"、 "2"、 "2"、 "1"、 "0"] 转换为 ["1, ' 1. 0x10 4567910 1.1。 1', 'a', 1', ', 'b', '1.1.2']