在复制任务期间更新xml文件

时间:2013-08-23 11:20:13

标签: xml groovy gradle

在复制类型任务期间更新zip存档中特定xml文件的最佳方法是什么?

到目前为止我所拥有的:

def unzip() {

    copy {
        def zipFile = configurations.tomcat.singleFile

        from zipTree(zipFile)
        into 'dir'

        eachFile { fileCopyDetails ->

            file = fileCopyDetails.file

            if ( file.getAbsolutePath().endsWith('conf' + File.separator + 'context.xml') ) {
                def contextXml = new XmlSlurper().parse(file)
                String contextStr = groovy.xml.XmlUtil.serialize(contextXml)

                println 'xml before:\n' + contextStr

                contextXml.appendNode { 
                    a('value')
                }

                contextStr = groovy.xml.XmlUtil.serialize(contextXml)
                println 'xml after:\n' + contextStr

                file.withWriter { outWriter ->
                    XmlUtil.serialize( new StreamingMarkupBuilder().bind{ mkp.yield contextXml }, outWriter )
                }
            }
        }
    }
}

此代码的问题在于它只更新'tmp'文件夹中的xml文件,而不更新最终'dir'文件夹中的xml文件。

提前致谢, PM

0 个答案:

没有答案