outputs.upToDateWhenを上書きします。このとき、doLastにあたるタスクがないと、何も起きないのでちゃんと書く事。(多分"<<"で追加しても良い。)
以下サンプル
特定のディレクトリにTomcatがなかったらダウンロードして配置する。(ディレクトリの有り/無しをoutputs.upToDateWhenで判定)
/* * This build file was auto generated by running the Gradle 'init' task * by 'ryozi' at '14/05/22 23:10' with Gradle 1.12 * * This generated file contains a commented-out sample Java project to get you started. * For more details take a look at the Java Quickstart chapter in the Gradle * user guide available at http://gradle.org/docs/1.12/userguide/tutorial_java_projects.html */ // Apply the java plugin to add support for Java apply plugin: 'java' apply plugin: 'download-task' buildscript { repositories { mavenCentral() } dependencies { classpath 'de.undercouch:gradle-download-task:1.0' } } // Environment def catalinaHome = "/opt/tomcat"; def tomcatZipUrl = "http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/tomcat/tomcat-7/v7.0.53/bin/apache-tomcat-7.0.53.zip"; task removeTomcat { outputs.upToDateWhen { ! new File(catalinaHome).exists() } doLast { new File(catalinaHome).deleteDir(); } } task installTomcat { outputs.upToDateWhen { new File(catalinaHome).exists() } doLast { def workDir = file("build/temp-tomcat"); def tomcatZipTemp = File.createTempFile("tomcat", ".zip"); def catalinaHomeDir = file(catalinaHome); // create temporary tomcatZipTemp.deleteOnExit(); workDir.mkdirs(); workDir.deleteOnExit(); // tomcat.zip download download { src tomcatZipUrl dest tomcatZipTemp } // Unzip copy { from zipTree(tomcatZipTemp) into workDir } // zip中にversion付きのディレクトリがあるので、それをリネームする def tomcatZipInRootDir = workDir.listFiles()[0] tomcatZipInRootDir.renameTo(catalinaHome); } }
downloadプラグインは https://github.com/michel-kraemer/gradle-download-task から拝借。