Thanks for this info!

Convention mapping seems like the best option, I'll give that a go tomorrow.

Thanks again,
 Micke

On 11 March 2011 23:04, Adam Murdoch <[email protected]> wrote:
>
> On 12/03/2011, at 4:08 AM, Mikael Andersson wrote:
>
> Hi
>
> I'm wondering if it is possible to have conditional execution of the
> configuration closure?
> I'm currently trying to write a simple release plugin which sets up
> tasks for taging, branching, uploadingArchive, bumbing version number,
> committing, and some other stuff.
>
> I'd like this plugin to be applied to all our "components" but
> currently I'm not quite sure how I can achieve that because when I'm
> declaring for example the svn copy task it uses parameters which
> aren't available unless one is wanting to execute that task.
>
> For example in my plugins apply method I've got
>
> project.task([type:SvnCopyTask], 'tagRelease){
> message = project.tagMessage
> src = project.svnSrc
> dest = project.svnDest
> }
>
> I'm pretty sure I'm missing something fundamental, how should I code
> such a task configuration?
>
> There's no really good option, yet. Here are some possibilities:
> * Configure the task in the afterEvaluate { } method:
> def copyTask = project.task('tagRelease', type: SvnCopyTask)
> project.afterEvaluate {
>     copyTask.configure {
>         message = ...
>     }
> }
> * Use a 'convention mapping':
> def copyTask = project.task('tagRelease', type: SvnCopyTask)
> copyTask.conventionMapping.message = { project.tagMessage }
> copyTask.conventionMapping.src = { project.svnSrc }
> Both of these approaches currently have some issues, but mostly work ok. We
> use the second approach pretty extensively in the built-in Gradle plugins.
> One option which has been discussed, but which is a major breaking change,
> is that we change Gradle so that it will only execute the configuration
> closure when the task is selected for execution, ie when it is added to the
> DAG. This would mean that your code above would work as-is.
>
> --
> Adam Murdoch
> Gradle Developer
> http://www.gradle.org
> Co-Founder and VP of Engineering, Gradleware Inc. - Gradle Training,
> Support, Consulting
> http://www.gradleware.com
>
>

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to