使用基本插件发布工件

时间:2013-06-06 06:11:16

标签: groovy gradle

我想使用基本插件发布一些工件。这就是我的构建方式:

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 }
}

这些是我要解决的问题:

  1. 是否可以创建嵌套任务?
  2. 是否可以在不创建新任务但使用闭包的情况下调用zip?
  3. 是否可以使用闭包调用自定义任务(与第2点相同的示例)?
  4. 我可以用这种方式创建zip / custom任务

    task myZip(type: Zip) {
        // do the job
    }
    

    是否可以这样调用它?

    zip {
        // do the job
    }
    

    如果无法使用闭包调用任务,我该怎么办?创建新任务是唯一的方法吗?也许我可以创建嵌套任务?

1 个答案:

答案 0 :(得分:1)

你的问题的答案是'不'。 Gradle是一个声明性构建系统。您可以声明任务依赖,而不是让一个任务调用另一个任务,Gradle将在执行期间遵守该任务。

对于某些任务类型(例如Copy),有一种等效方法(例如project.copy),但不适用于Zip。在大多数情况下,即使存在方法,也最好使用任务。

Gradle User Guide的前几章解释了核心Gradle概念,例如详细的任务依赖性。