Hi Rene,
On May 4, 2009, at 12:07 AM, Rene Groeschke wrote:
Hello,
well in my Opinion the old syntax >> createTask("blablubb") << was
a bit more self-explanatory, since it makes it clear that this is a
configuration phase operation and you are creating something and not
just assigning.
When we were discussing our new DSL a couple of months ago, we got a
lot of feedback, that we should not describe operations (e.g. createX)
but should rather declare (e.g. task X). We do the same now with
configurations:
configurations {
newConf
}
Another "pro" for the old syntax is, that I just get used to
"createTask" ;-)
We expect our early adopters to be flexible ;)
Does this new syntax in the trunk replace the old syntax, or is it a
kind of short cut DSL additional to the existing syntax?
createTask will be deprecated and eventually removed. It will be
replaced by the new DSL syntax as well as by API methods of the tasks
container (see the end of Adam's mail).
- Hans
regards,
René Gröschke
Am 03.05.2009 um 11:05 schrieb Adam Murdoch:
Hi,
I'd like to get some feedback on the new task definition DSL I've
added to trunk.
The changes replace the createTask() method with a keyword style
syntax for use in build scripts, and a groovy-ish API for use
elsewhere.
The new syntax is:
task <task-name> [(option...)] [ { action } ]
Some examples:
task aTask // was createTask('aTask')
task aTask { do stuff } // was createTask('aTask') { do stuff }
task aTask(type: Copy, dependsOn: someOtherTask) // was
createTask('aTask', type: Copy, dependsOn: someOtherTask)
task aTask(dependsOn: anotherTask) { do stuff } // you can figure
this one out
More examples in the user guide at
http://gradle.org/userguide/latest/tutorial_using_tasks.html
One thing to note is that this syntax works only for statements. It
does not work for expressions. That is, you can't do:
Task someVar = task aTask
For one thing, this isn't actually valid groovy. It would have to
look like:
Task someVar = task(aTask)
which defeats the purpose, I think. It also looks a lot like a call
to the Project.task() method, which is confusing, I think:
Task someVar = task('anExistingTask')
or worse:
taskName = 'anExistingTask'
Task someVar = task(taskName) { configure the task }
For both these reasons, I've limited the syntax to statements.
For defining a task in an expression, or in classes outside the
build script, you can use the API on TaskContainer:
tasks.add(name: 'aTask') // replaces createTask('aTask')
tasks.add(name: 'aTask') { do something }
tasks.add(name: 'aTask', type: Copy)
Finally, Project.createTask() will be deprecated in the 0.6
release, and removed some time after the release.
Comments?
Adam
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email
--
Hans Dockter
Gradle Project lead
http://www.gradle.org
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email