Confused with Gradle API Usage


(Thunder) #1

Hi
Can someone help me to understand Gradle API.
I came from Java background and have little idea about Groovy.
Before writing this I have searched internet for videos and blogs, but not useful for beginners to jump into gradle quickly.

Where to start to learn this API usage ? dont say gradle API guide/ user guide i have gone through that but not helped.
Because it is in Groovy style syntax , I am not able to understand what/how/where i can use api/properties/methods.

**Sample Questions **

  1. let’s say I want to fetch one dependency and extract and filter xml files , I dont know where to start.
  2. I have seen getSingleFile() method but we used as singleFile. are these properties are implictly available with getXXX?
  3. How can i know i may use each instead of forEach in FileCollection ?

where I stuck
I tried to know from internet:
configurations.compile.???
What methods I can use on compile configuration?
Sometimes it is Spec, or Container…etc

Totally Confused in understanding these API usages.

It is the common blocking place in gradle for most of the beginners.


(Stefan M.) #2

Hey @Slok

I’m with you!
As I started with Gradle I was totally confused either. Just because of Groovy - which is from my point of view just confusing.

Anyway.
I think it is good to learn some Groovy basics.
Something like

  • you can omit get and set in setters/getters
  • you don’t have to add parentheses for parameters
    … and some more :upside_down_face:

Beside of that it is helpful to take a look into the Gradle Javadoc. This helps you as a dev with Java background a little bit better.

To answer some of your questions:

I have seen getSingleFile() method but we used as singleFile. are these properties are implictly available with getXXX?

As I said above. Yes, this is Groovy. You can simply omit the get and set.
singleFile File("path") should also work. Because there exist a method like setSingleFile(File file).

configurations.compile.???

The configurations is a method from the Project class. See this javadoc.
The compile is a Configuration inside the ConfigurationContainer.
The configurations.compile is in “java words” like Project#getConfigurations().getByName("compile").

Hope that helps you a little bit.


(Thunder) #3

Hi @StefMa

Thanks for understanding issue with Gradle API and answering partially.
Actually , Gradle would provide detail explanation of these kind of apis helpful for beginners.


(Ross Goldberg) #4

Use the Kotlin DSL (domain-specific language) instead of the Groovy DSL (this means write your build scripts in Kotlin, instead of in Groovy).

A few years ago, Gradle added support for writing build scripts in Kotlin instead of Groovy. Kotlin is a static language created by JetBrains, the makers of IntelliJ IDEA. It features many of the syntactic shortcuts familiar to users of Groovy, but, being a static language instead of a dynamic language, it is better in many ways: an IDE can verify your build script, autocomplete in it, navigate to definitions of methods, etc.

To use Kotlin, append .kts to the .gradle file names; e.g., build.gradle becomes build.gradle.kts.

To get source for the Gradle code used by a Gradle Wrapper build, in gradle-wrapper.properties, set the end of the value for the distributionUrl property to be -all.zip instead of -bin.zip.