ファイルのダウンロード
ダウンロードプラグインを使うと簡単。
plugins { id 'java' id "de.undercouch.download" version "1.2" } repositories { mavenCentral() } task wrapper(type: Wrapper) { gradleVersion = '2.2.1' } task downloadAndUnzip { outputs.upToDateWhen { file('data').exists() } doLast { def downloadedFile = new File(buildDir, 'downloaded/some.zip') download { src 'http://www.someurl.com/some.zip' dest downloadedFile } copy { from zipTree(downloadedFile) into new File(projectDir, 'data') } } }
- ファイルダウンロードプラグインを指定
- download タスクで指定したURLからファイルダウンロード
- ダウンロードしたファイルはプロジェクトディレクトリ直下の
dest
の中に展開 - upToDate 判定を
dest
ディレクトリの存在確認で実施(2回目からはスキップされる)
プラグインを使わないと
以下のように書ける。
def f = new File('data') if (!f.exists()) { new URL('http://www.someurl.com/some.zip').withInputStream{ i -> f.withOutputStream{ it << i }} }
けど、プロキシ経由できなかったり、リダイレクトに対応できない模様。
そんな場合は Ant の助けを借りて以下。
task downloadSomething(type: MyDownload) { sourceUrl = 'http://www.someurl.com/some.zip' target = file('data') } someOtherTask.dependsOn downloadSomething class MyDownload extends DefaultTask { @Input String sourceUrl @OutputFile File target @TaskAction void download() { ant.get(src: sourceUrl, dest: target) } }
Gradle Effective Implementation Guide
- 作者: Hubert Klein Ikkink
- 出版社/メーカー: Packt Publishing
- 発売日: 2012/10/25
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
Gradle徹底入門 次世代ビルドツールによる自動化基盤の構築
- 作者: 綿引琢磨,須江信洋,林政利,今井勝信
- 出版社/メーカー: 翔泳社
- 発売日: 2014/11/05
- メディア: 大型本
- この商品を含むブログ (2件) を見る