pepuch
pepuch

Reputation: 6516

Publish artifacts using base plugin

I want to publish few artifacts using base plugin. This is how my build looks like:

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

And those are my problems to solve:

  1. Is it possible to create nested tasks?
  2. Is it possible to call zip without create new task but with closures?
  3. Is it possible to call custom task using closures (the same example as at 2nd point)?

I can create zip/custom task in this way

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

is it possible to call it in this way?

zip {
    // do the job
}

If it is not possible to call tasks using closures, how can I do it? Creating new tasks is the only way? Maybe I can create nested tasks?

Upvotes: 0

Views: 68

Answers (1)

Peter Niederwieser
Peter Niederwieser

Reputation: 123996

The answer to your questions is 'no'. Gradle is a declarative build system. Instead of having one task call another, you declare task dependencies, which Gradle will obey during execution.

For some task types (e.g. Copy), there is an equivalent method (e.g. project.copy), but not for Zip. In most cases, it's better to use a task even if a method exists.

The first several chapters of the Gradle User Guide explain core Gradle concepts such as task dependencies in detail.

Upvotes: 1

Related Questions