假设我想在buildSrc/src/main/groovy/JDKDownloader.groovy
中编写自定义Gradle任务,可以下载任何版本的Java JDK。它看起来像这样:
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'
}
现在,问题是:对于这个具体的例子,我想使用Gradle下载插件here,因为它在下载文件时显示了一个很好的进度显示。但是如何在JDKDownloader中以合理的方式使用这个插件/任务?在普通的Gradle脚本中,必须执行此操作:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'de.undercouch:gradle-download-task:0.5'
}
}
之后可以像这样使用它:
download {
src: 'someurl'
dest: 'somedir'
}
但是,我们如何从JDKDownloader
执行此操作?显然,在他可以使用JDKDownloader
(丑陋的隐式依赖)之前,要求类的用户自己应用下载插件并不是一个很好的解决方案。另一方面,JDKDownloader
应该混淆调用脚本的buildscript依赖项似乎很奇怪。
那么有更好的(有利的)方法吗?
答案 0 :(得分:0)
如果您将插件发布为Maven或Ivy模块,则传递依赖关系管理将负责其依赖性。