how to download external files in gradle?

前端 未结 7 526
你的背包
你的背包 2020-12-02 09:50

I have a gradle project which requires some data files available somewhere on the internet using http. The goal is that this immutable remote file is pulled once upon first

7条回答
  •  暖寄归人
    2020-12-02 10:41

    You could probably use the Ant task Get for this. I believe this Ant task does not support resuming a download.

    In order to do so, you can create a custom task with name MyDownload. That can be any class name basically. This custom task defines inputs and outputs that determine whether the task need to be executed. For example if the file was already downloaded to the specified directory then the task is marked UP-TO-DATE. Internally, this custom task uses the Ant task Get via the built-in AntBuilder.

    With this custom task in place, you can create a new enhanced task of type MyDownload (your custom task class). This task set the input and output properties. If you want this task to be executed, hook it up to the task you usually run via task dependencies (dependsOn method). The following code snippet should give you the idea:

    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)
        }
    }
    

提交回复
热议问题