我想使用基本插件发布一些工件。这就是我的构建方式:
apply plugin: 'base'
group = 'eu.com'
version = '0.9'
def winCdZip = file('dist/winCd.zip')
configurations {
wincd
}
repositories {
ivy {
url 'http://ivy.repo'
}
}
artifacts {
wincd winCdZip
}
buildscript {
repositories {
ivy {
url 'http://ivy.repo'
}
}
dependencies {
classpath group: 'eu.com', name:'MyCustomTask', version:'0.9-SNAPSHOT', configuration: 'runtime'
}
}
buildWincd {
// call MyCustomTask; is it possible to call it in this way?
MyCustomTask {
// pass few parameters required by this task
}
// I know that it's impossible to call zip in this way but I don't want to create another task
zip {
// build zip and save it in 'winCdZip'
}
}
uploadWincd {
repositories { add project.repositories.ivy }
}
这些是我要解决的问题:
我可以用这种方式创建zip / custom任务
task myZip(type: Zip) {
// do the job
}
是否可以这样调用它?
zip {
// do the job
}
如果无法使用闭包调用任务,我该怎么办?创建新任务是唯一的方法吗?也许我可以创建嵌套任务?
答案 0 :(得分:1)
你的问题的答案是'不'。 Gradle是一个声明性构建系统。您可以声明任务依赖,而不是让一个任务调用另一个任务,Gradle将在执行期间遵守该任务。
对于某些任务类型(例如Copy
),有一种等效方法(例如project.copy
),但不适用于Zip
。在大多数情况下,即使存在方法,也最好使用任务。
Gradle User Guide的前几章解释了核心Gradle概念,例如详细的任务依赖性。