我有一个gradle项目,需要一些数据文件在互联网上的某个地方使用http。目标是在第一次构建时拉出这个不可变的远程文件。后续构建不应再次下载。
如何指示gradle将给定的文件获取到本地目录?
我试过了
task fetch(type:Copy) {
from 'http://<myurl>'
into 'data'
}
但是似乎复制任务类型不能处理http。
附加问题:有没有办法像wget -c
一样恢复之前中止/中断的下载?
发布于 2013-06-15 21:36:45
不如这样吧:
def f = new File('the file path')
if (!f.exists()) {
new URL('the url').withInputStream{ i -> f.withOutputStream{ it << i }}
}
发布于 2013-06-15 21:09:03
您可以使用Ant task Get来实现这一点。我相信这个Ant任务不支持恢复下载。
为此,您可以创建一个名为MyDownload
的自定义任务。基本上,它可以是任何类名。此自定义任务定义用于确定是否需要执行任务的输入和输出。例如,如果文件已经下载到指定的目录,则任务被标记为最新。在内部,这个自定义任务通过内置的AntBuilder
使用Ant任务Get
。
有了这个自定义任务,您就可以创建一个新的MyDownload
类型的增强任务(您的自定义任务类)。此任务设置输入和输出属性。如果您希望执行此任务,请将其与通常通过任务依赖项(dependsOn
方法)运行的任务挂钩。下面的代码片段应该会让您有所了解:
task downloadSomething(type: MyDownload) {
sourceUrl = 'http://www.someurl.com/my.zip'
target = new File('data')
}
someOtherTask.dependsOn downloadSomething
class MyDownload extends DefaultTask {
@Input
String sourceUrl
@OutputFile
File target
@TaskAction
void download() {
ant.get(src: sourceUrl, dest: target)
}
}
发布于 2015-05-13 19:08:32
试着这样做:
plugins {
id "de.undercouch.download" version "1.2"
}
apply plugin: 'java'
apply plugin: 'de.undercouch.download'
import de.undercouch.gradle.tasks.download.Download
task downloadFile(type: Download) {
src 'http://localhost:8081/example/test-jar-test_1.jar'
dest 'localDir'
}
你可以在这里查看更多信息:https://github.com/michel-kraemer/gradle-download-task
对我来说很好..
https://stackoverflow.com/questions/17123606
复制相似问题