首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在gradle中下载外部文件?

如何在gradle中下载外部文件?
EN

Stack Overflow用户
提问于 2013-06-15 20:25:02
回答 7查看 47.5K关注 0票数 49

我有一个gradle项目,需要一些数据文件在互联网上的某个地方使用http。目标是在第一次构建时拉出这个不可变的远程文件。后续构建不应再次下载。

如何指示gradle将给定的文件获取到本地目录?

我试过了

代码语言:javascript
运行
复制
task fetch(type:Copy) {
   from 'http://<myurl>'
   into 'data'
}

但是似乎复制任务类型不能处理http。

附加问题:有没有办法像wget -c一样恢复之前中止/中断的下载?

EN

回答 7

Stack Overflow用户

发布于 2013-06-15 21:36:45

不如这样吧:

代码语言:javascript
运行
复制
def f = new File('the file path')
if (!f.exists()) {
    new URL('the url').withInputStream{ i -> f.withOutputStream{ it << i }}
}
票数 60
EN

Stack Overflow用户

发布于 2013-06-15 21:09:03

您可以使用Ant task Get来实现这一点。我相信这个Ant任务不支持恢复下载。

为此,您可以创建一个名为MyDownload的自定义任务。基本上,它可以是任何类名。此自定义任务定义用于确定是否需要执行任务的输入和输出。例如,如果文件已经下载到指定的目录,则任务被标记为最新。在内部,这个自定义任务通过内置的AntBuilder使用Ant任务Get

有了这个自定义任务,您就可以创建一个新的MyDownload类型的增强任务(您的自定义任务类)。此任务设置输入和输出属性。如果您希望执行此任务,请将其与通常通过任务依赖项(dependsOn方法)运行的任务挂钩。下面的代码片段应该会让您有所了解:

代码语言:javascript
运行
复制
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)
    }
}
票数 31
EN

Stack Overflow用户

发布于 2015-05-13 19:08:32

试着这样做:

代码语言:javascript
运行
复制
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

对我来说很好..

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17123606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档