Gradle:使用WAR创建中的资源替换源文件

时间:2016-09-19 15:13:38

标签: gradle war

在我的Gradle WAR版本中,我尝试用外部资源中的较新版本替换两个.js文件。

如果文件较新,我想替换我的" base" JS文件夹中的文件:

task downloadJs {
    ant.mkdir(dir:"${buildDir}/js/")
    ant.get(src:'http://external.url/js/file1.js', dest:"${buildDir}/js/file1.js", usetimestamp: true, ignoreerrors: true)
    ant.get(src:'http://external.url/js/file2.js', dest:"${buildDir}/js/file2.js", usetimestamp: true, ignoreerrors: true)
}

war {
    dependsOn donwloadJs

    from("${buildDir}/js") { 
        include '*' 
        into('js') 
    }
} 

但是这个配置会在战争中创建重复的.js文件。 我不想删除原始文件,以避免在下载失败时没有文件。

我怎么能告诉war复制配置覆盖文件? duplicatesStrategy似乎无法正常工作,它可以让我失败或留下重复,但不能覆盖。

1 个答案:

答案 0 :(得分:0)

好吧,我自己找到了办法:

war {
    dependsOn downloadJs

    from("${buildDir}/js") { 
        include '*' 
        into('js') 
    }

    exclude {
        it.path.startsWith("js") && file("${buildDir}/js/${it.name}").exists()
    } 
} 

关键是要添加复制新文件,并按照其他规则排除原件,但只删除已下载的原件,检查替换文件夹中是否存在相同的文件

有人用更干净的方式?