On 10/12/2010, at 8:46 PM, richardm wrote:

> 
>>> Is is possible to call a task in Gradle with different parameters? 
> 
>>>> 1) Task rules could be one approach.
> 
>>>> 2) Or, you could dynamically create four tasks. Iterate over a list of
>>>> 'parameters' and dynamically 
>>>> create a task for each element. See a sample below (the content of the
>>>> Zip task is not complete and >>> not relevant for this example): 
> 
> I opted for the dynamic tasks approach.  I use a list of property file names
> to loop round, and use the name to load a different properties file required
> for my filter.
> 
> ['jboss4-live', 'jboss4-demo', 'jboss4-test', 'jboss4-trng'].each { def
> propertyName ->
>        //create dynamic tasks
>               tasks.add(name: "zipIt$propertyName", type: Zip, dependsOn:
> [filesToDeploy, copyBaseWar, copyServerLogWar, copyOrchardFiles]) {
>            //load properties file for jboss environment (used by filter
> below)
>            Properties props$propertyName = new Properties()
>            props$propertyName.load(new
> FileInputStream("$projectDir/property-files/" + propertyName +
> ".properties"))                                            
>            jbossType = props$propertyName.getProperty('JBOSSTYPE')
> 
>            baseName = jbossType
>            destinationDir = file("$projectDir/files_to_deploy")
>            //'from' is split into 2 steps so we can apply filters to a
> limited set of file (.xml, .bat, .sh, .properties).  
>            from ('jboss-4.0.2-master') {
>                include "**/*.xml", "**/*.bat", "**/*.sh", "**/*properties"    
>                         
>                filter(ReplaceTokens, tokens: props$propertyName)              
>                 
>                into jbossType
>            }
> 
>            from ('jboss-4.0.2-master') {
>                //exclude the files already copied (and filtered) in above
> step
>                exclude "**/*.xml", "**/*.bat", "**/*.sh", "**/*properties"
>                rename 'JavaService.exe',
> props$propertyName.getProperty('SYSTEMTYPE') + ".exe"                
>                into jbossType
>            }             
>        }
>    }
> 
> This works great, but I'm not clear on how this could be done using Task
> rules.  I've read the documentation on task rules but don't understand it as
> their's only one example.  Can anyone explain task rules in more detail or
> provide examples?
> 
>>> I think using multiple tasks is the right way to go.
> 
> Adam, when you say multiple tasks, do you agree with the dynamic tasks
> approach?


Yes.


--
Adam Murdoch
Gradle Developer
http://www.gradle.org
CTO, Gradle Inc. - Gradle Training, Support, Consulting
http://www.gradle.biz

Reply via email to