Gradle Single vs Double Quotes

20,073

Solution 1

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.

Solution 2

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

Solution 3

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.

Solution 4

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!"
}
Share:
20,073
Dan W
Author by

Dan W

Detail-oriented Solutions Architect with 10 years of back-end Java experience. Fluent in software engineering methodologies such as testing, debugging, and overall project design.

Updated on February 19, 2022

Comments

  • Dan W
    Dan W about 2 years

    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.

  • Peter Niederwieser
    Peter Niederwieser about 11 years
    Double-quoted string literals are GStrings iff they contain a $. Otherwise, they are plain Strings.
  • Dan W
    Dan W about 11 years
    Thanks for the clear explanation. But now I have a follow up question, is there any reason to not always use double quotes then?
  • Peter Niederwieser
    Peter Niederwieser about 11 years
    Mostly subjective/situational ones like "looks better", "used to this style from another language", "want to use literal $ or " without having to escape them", "easier to type". Many Groovy users seem to prefer single quotes by default. I prefer double quotes because they allow me to add/remove String interpolation without changing the quotes. Also I'm used to double quotes from languages like Java.
  • Dave L.
    Dave L. almost 4 years
    Looks like that guide and guidance has disappeared.
  • Julian A.
    Julian A. almost 4 years
    @DaveL. Yeah, and I can't find it anywhere else.
  • AlgoRyan
    AlgoRyan almost 4 years
    Found some similar guidance here - groovy-lang.org/style-guide.html "Last but not least, prefer using single quoted strings when you need string constants, and use double quoted strings when you are explicitly relying on string interpolation."
  • Android
    Android about 3 years
    imo, mixing is much more noisy than only using double quotes.