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