2016-09-19 96 views
0

在我的Gradle WAR構建中,我試圖用外部資源的新版本替換兩個.js文件。Gradle:用WAR中的資源替換源文件

如果文件是新的,我想替換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文件。 我不想刪除原始文件,以避免在下載失敗時沒有文件。

我怎麼能告訴戰爭副本配置覆蓋文件? duplicatesStrategy似乎不起作用,它允許我失敗或留下重複,但不能重寫。

回答

0

嗯,我自己找到了一種方法:

war { 
    dependsOn downloadJs 

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

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

的關鍵是讓另外複製新的文件,以及其他規則,排除原件,但只有已下載的那些,檢查替換文件夾中是否存在相同的文件

有人用更乾淨的方式?