Brett,
The println(s) you defined in the tasks are coded in the configuration phase...
not the execution phase. This is designed behavior. What you are likely
missing based on your question and intended outcome is to define your task like
this:
> task customOne << {
> println "ONE: I am $project.name"
> }
>
> task customTwo << {
> println " - TWO: My parent is $project.parent.name"
> }
the << makes all the difference here. without it you are configuring the
task... with it, you are basically calling doLast() on the task
Ken Sipe | [email protected] | blog: http://kensipe.blogspot.com
On Feb 16, 2011, at 8:50 AM, Brett Cave wrote:
> Hi Rene,
>
> On Wed, Feb 16, 2011 at 4:20 PM, Rene Groeschke <[email protected]> wrote:
> Hi Brett,
> I don't see any question in your post. In your provided example, you
> define a pmd task for each subproject. running "gradle pmd" executes all
> of them. for details have a look at
> http://gradle.org/0.9.2/docs/userguide/userguide_single.html#multi_project_builds
>
> Sorry, the question was left out "Why does gradle run ALL custom tasks in
> subprojects, whether I call them or not" - as mentioned in my original email,
> "When I run ANYTHING on the parent, all subprojects execute PMD"
>
> My understanding of grade is that only invoked tasks will be called if there
> are no task dependencies. I have just tested by replacing my build.gradle
> with a much simpler one, is this behaviour correct below (i.e. the defined
> tasks are always called, even when I only call the 'tasks' task)?
>
> subprojects {
> apply plugin: 'java'
>
> version = project.parent.version
>
> task customOne {
> println "ONE: I am $project.name"
> }
>
> task customTwo {
> println " - TWO: My parent is $project.parent.name"
> }
> }
>
> Thats all that I have in my build.gradle. When I run "gradle tasks", i get
> the following output:
>
> [me@host proj1]$ gradle tasks
> ONE: I am project-api
> - TWO: My parent is proj1
> ONE: I am project-client
> - TWO: My parent is proj1
> ONE: I am project-model
> - TWO: My parent is proj1
> ONE: I am project-server
> - TWO: My parent is proj1
> :tasks
>
> ------------------------------------------------------------
> Root Project
> ------------------------------------------------------------
> /// The rest of "tasks" output is displayed.
>
>
> So the question is: how should I correctly configure tasks so they are not
> executed by every gradle call, but only when passed as an argument to gradle?
>
>
> regards,
> René
>
> Am 16.02.11 15:04, schrieb Brett Cave:
> > I have a multi project gradle project, and have defined a task in the
> > parent:
> >
> > // start
> > subprojects {
> > apply plugin: 'java'
> > apply plugin: 'code-quality'
> >
> > configurations { pmdConf }
> > dependencies { pmdConf 'pmd:pmd:4.2.5' }
> >
> > task pmdCheck {
> > println "Running PMD code check on " + project.name
> > ant {
> > // the ant definition for pmd in here: a taskdef with name pmdTask
> > and then invoking the task.
> > }
> > }
> > }
> >
> > // end build.gradle
> >
> >
> > When I run anything on the parent, PMD is executed:
> > e.g. gradle compileJava
> > "Running PMD code check on subproject1"
> > "Running PMD code check on subproj2"
> > "Running PMD code check on subproj3"
> >
>
>
> --
> ------------------------------------
> Rene Groeschke
>
> [email protected]
> http://www.breskeby.com
> http://twitter.com/breskeby
> ------------------------------------
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
> http://xircles.codehaus.org/manage_email
>
>