我想使用基本插件发布一些 Artifact 。这是我的构建的样子:
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 /自定义任务
task myZip(type: Zip) {
// do the job
}
可以这样称呼吗?
zip {
// do the job
}
如果无法使用闭包调用任务,该怎么办?创建新任务是唯一的方法吗?也许我可以创建嵌套任务?
最佳答案
您的问题的答案是“否”。 Gradle是一个声明式构建系统。您可以声明任务依赖关系,而不是让一个任务调用另一个任务,而Gradle将在执行过程中遵循该依赖关系。
对于某些任务类型(例如Copy
),有一个等效的方法(例如project.copy
),但不是Zip
。在大多数情况下,即使存在方法,也最好使用任务。
Gradle User Guide的前几章详细解释了Gradle的核心概念,例如任务依赖性。
关于groovy - 使用基本插件发布工件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16954832/