What are the most common , efficient ways to inspect a gradle build?

What is the best way to trace and determine what a gradle build is doing, without using ad hoc searches (i.e. without using google)?

Three questions which I have :

  • I notice that, for example, there are many task types, but its not clear to me how to determine what parameters can be set for what tasks in a real gradle project.

  • Also, its not clear to me how to determine how to implement the gradle help function… Without ad hoc google searching.

Id like to have a help statement print out all the tasks in my project… but im not sure what task to override to do this.

  • Its not clear to me how the tast “type” is leveraged at build time.

The gradle docs are a great resource, but i find that they dont provide guidance as to how to inspect and debug a real world gradle project with several overriden tasks.

All task types are documented in the Gradle Build Language Reference.

To print out the tasks of a project, type ‘gradle tasks’. To also see tasks which aren’t typically invoked directly, add ‘–all’.

A task type determines what the task does, and how it can be configured.

Overriding tasks is problematic in several ways, and should almost always be avoided.

Thanks for the response, so, when we specify properties and declare a task, is this equivalent to an override ?

If yes, then … how can we customize the behaviour / properties for our unit tests without overriding?

test {
      systemProperties['org.apache.MyTests.test_include'] = 'basic'
      testLogging {
      events "passed", "skipped", "failed"
    }
  }

This is just configuring the task, which is of course fine. I thought you were referring to ‘override: true’, with replaces a task declaration.

ah ok… thanks.

this notation is easy to mistake w/ override for newcomers like me :slight_smile:

in any case, is there a way to trace through, visualize, or print out each element of a gradle build, similar to mvn effective pom?

I guess, the answer is - that when you invoke a task, you can directly look at its documentation in http://gradle.org/docs/current/dsl/index.html.

However, for example - if i look at the “test” task in that site …

http://www.gradle.org/docs/current/dsl/org.gradle.api.tasks.testing.Test.html

And you can read about it there.

I gues gradle is more imperative than maven, so… you don’t need as much introspection .

Printing the whole object model isn’t feasible. There are some built-in tasks that allow to introspect certain parts of the model - ‘gradle projects’, ‘gradle properties’, ‘gradle tasks’, ‘gradle dependencies’, ‘gradle dependencyInsight’. More generic introspection facilities are planned for a future release. It’s also common to add some 'println’s to the build script.

1 Like