我有一些常见的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/