title: Publish artifacts using base plugin
body: <p>I want to publish few artifacts using base plugin. This is how my build looks like:</p>
  
  <pre><code>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 }
  }
  </code></pre>
  
  <p>And those are my problems to solve:</p>
  
  <ol>
  <li>Is it possible to create nested tasks?</li>
  <li>Is it possible to call zip without create new task but with closures?</li>
  <li>Is it possible to call custom task using closures (the same example as at 2nd point)?</li>
  </ol>
  
  <p>I can create zip/custom task in this way</p>
  
  <pre><code>task myZip(type: Zip) {
      // do the job
  }
  </code></pre>
  
  <p>is it possible to call it in this way?</p>
  
  <pre><code>zip {
      // do the job
  }
  </code></pre>
  
  <p>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?</p>