xml - 在Gradle中,复制到项目后无法修改xml

标签 xml parsing groovy build gradle

我有一些常见的xml文件,这些文件包含在我的版本的jar中,从共享位置复制后需要修改。该代码失败,并显示“没有此类文件或目录”错误,因为该文件直到被复制后才存在。我该如何解决?该文件经常被修改,因此复制到每个项目并进行维护并不是一个真正的选择。有没有办法确保gradle文件将很快在那里?

import groovy.xml.StreamingMarkupBuilder

apply plugin: 'java'

task copyCR(type: Copy) {
    from '../../copyrights/cr.xml' //XML file shared across many projects
    into 'copyrights'
}
task specializeCR(dependsOn: copyCR) {
    def root = new XmlSlurper().parse('./copyrights/cr.xml')
    root.copyright.@Name = 'Project Specific XML settings'
    def outputBuilder = new StreamingMarkupBuilder()
    new FileWriter('./copyrights/cr.xml') << outputBuilder.bind{ mkp.yield root }
}
build {
    dependsOn specializeCR
}
clean{
    delete 'copyrights'
}
sourceSets{
    main{
        resources{
            srcDir 'copyrights'
        }
    }
}

最佳答案

任务执行的所有工作都需要执行任务操作:

task specializeCR(dependsOn: copyCR) {
    doLast { // add a task action for this task 
        ...
    }
}   
specializeCR需要取决于使用文件的任务(而不是build)。否则,不能保证它将在正确的时间执行。

关于xml - 在Gradle中,复制到项目后无法修改xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26391824/

相关文章:

.net - XMLSerializers Dll 加载失败,出现 Assembly.Load(byte[] asm)

xml - XPath:获取节点中最后一个同级的值

java - 日期解析魔法

ruby - nokogiri + 通过文本 Mechanize css 选择器

java - groovy 脚本中使用 java 的 Hello World 示例给出了空指针

java - 从日志文件中提取 Java 错误堆栈

java - DrawerLayout 后退箭头功能

php - 如何验证我的 PHP 代码可能生成的许多可能的 HTML 页面?

string - 我可以重新定义 String#length 吗?

java - Groovy 正则表达式 : What does a tilde in a character class do?