我的安装程序有三个阶段:
1)下载 2)解压缩 3)配置
下载,使用ant.get和ant.checksum,所以我构建了自己的DownloadTask类,然后在构建中:
task download (type: DownloadTask) {
url = url
checksumAlgorithm = 'MD5'
destFile = zipFile
}
所以我带来了4个任务:
task download {...}
task unzip {...}
task configure {..}
task install(dependsOn: [download, unzip, configure]) {}
但我注意到dependsOn不尊重排序顺序,http://issues.gradle.org/browse/GRADLE-427
那么......这里的解决方法是什么?
我不能仅将此任务作为方法移动,因为下载它使用的是我的DownloadTask类。我可以将所有方法都移动(甚至是DownloadTask),但这似乎不是最好的解决方案。
由于
答案 0 :(得分:10)
好吧,如果这对您有任何帮助,您也可以亲自调用您的依赖项:
task install << {
download.execute()
unzip.execute()
configure.execute()
}
我认为这不是真正的Gradle想法,但对于我的多项目构建而言,这非常有效。
问候,
扬
答案 1 :(得分:2)
如前所述,您可以将构建配置为具有这些依赖关系。 “重用”任务是什么意思?您可以在此处使用自动装配,而不是使用dependsOn属性。
自动装配意味着,您将任务下载的输出声明为解压缩任务的输入,依此类推。在上面的示例中,url将是Download任务的输入,destFile是输出。这种方法可以轻松地重用每个任务,并且不需要显式排序。在gradle用户指南的第14.8章中,您可以找到此类自动装配的简要介绍(http://www.gradle.org/current/docs/userguide/more_about_tasks.html#N10D4D)。看看有关TaskInputs和TaskOutputs的Javadoc(本章中提到)。
的问候, 勒内