Question

I'm new to gradle and am currently just trying to follow the tutorials and quite a few times I've seen single and double quotes intermixed. I just wanted to know if there was a difference of when one set should be used over the other. One example of this is section 6.12 of the tutorial - Default tasks:

defaultTasks 'clean', 'run'

task clean << {
    println 'Default Cleaning!'
}

task run << {
    println 'Default Running!'
}

task other << {
    println "I'm not a default task!"
}

So, I would just like to know if I should be paying attention to these differences or if they are inter-changable and I can use either single or double quotes when printing strings in gradle.

Was it helpful?

Solution

Gradle build scripts are written in Groovy. Groovy has both double-quoted and single-quoted String literals. The main difference is that double-quoted String literals support String interpolation:

def x = 10
println "result is $x" // prints: result is 10

You can learn more about Groovy String interpolation in this or other Groovy articles on the web.

OTHER TIPS

Yes, you can use one or the other. The only difference is that double-quoted strings can be GStrings, which can contain evaluated expressions like in the following example taken from the Groovy documentation:

foxtype = 'quick'
foxcolor = ['b', 'r', 'o', 'w', 'n']
println "The $foxtype ${foxcolor.join()} fox"
// => The quick brown fox

According to the gradle docs:

Favor single quotes for plain strings in build script listings

This is mostly to ensure consistency across guides, but single quotes are also a little less noisy than double quotes. Only use double quotes if you want to include an embedded expression in the string.

Single-quoted strings are a series of characters surrounded by single quotes. like :

def str='a single quoted string'
println str

Ouput :

a single quoted string

Whereas Double-quoted strings allow us the String interpolation Here, we have a string with a placeholder referencing a local variable:

def name = 'Guillaume' // a plain string
def greeting = "Hello ${name}"

Output : Hello Guillaume

In your code,If you want to print the task name. So in that case, you need to use Double-quotes:

defaultTasks 'clean', 'run'

task clean << {
    println 'Default Cleaning!'
}

task run << {
    println "Default Running $run.name!"
    // here Double Quotes are required to interpolate task-name
}

task other << {
    println "I'm not a default task!"
}

Kotlin DSL files (like build.gradle.kts or settings.gradle.kts) are regular Kotlin code.
So, string literal are always wrapped in double quotes:

val myFirstString = "4 / 2 equals ${4 / 2}"
val mySecondString = """The property "hide" was not found"""
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top