0
假设我想编写一个定制的Gradle任务buildSrc/src/main/groovy/JDKDownloader.groovy
,它可以下载任何版本的Java JDK。它看起来是这样的:Gradle:在自定义任务类中使用其他(非官方)任务?
class JDKDownloader extends DefaultTask {
String version = getLatestJDKVersion()
String dest = null;
@TaskAction
def download() {
.. code to download JDK ..
}
private String getLatestJDKVersion() {
.. code to find latest JDK version ..
}
}
人们可以使用这样的:
task downloadJDK16(type: JDKDownloader) {
version = '1.6'
dest = 'jdkDownload'
}
现在的问题是:这个具体的例子我想使用的摇篮下载插件here,因为它显示下载文件时显示一个很好的进度。但是,如何在JDKDownloader内以一种合适的方式使用这个插件/任务?在一个正常的摇篮脚本一个人做到这一点:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'de.undercouch:gradle-download-task:0.5'
}
}
之后,可以使用这样的:
download {
src: 'someurl'
dest: 'somedir'
}
但是,我们如何做到这一点从JDKDownloader
?显然,在他可以使用JDKDownloader
(难看的隐式依赖)之前,要求该类的用户自己应用下载插件并不是一个很好的解决方案。另一方面,看起来很奇怪JDKDownloader
应该与调用脚本的buildscript依赖关系混淆。
那么有没有更好的方法来做到这一点?
但是,如果我只是想使用自定义任务类作为容器来保持事物清洁,而不是构建一个旨在用于其他模块的插件呢?因此,我没有在我的build.gradle中包含所有JDK下载函数,而是将它们放入JDKDownloader抽象中。 – johnrl
然后下载插件变成'buildSrc/build.gradle'中的常规编译或运行时依赖项,我想就是这样。 –