Gradle Single vs Double Quotes

KotlinGradleGroovybuild.gradleGradle Kotlin-Dsl

Kotlin Problem Overview


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.

Kotlin Solutions


Solution 1 - Kotlin

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 - Kotlin

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 - Kotlin

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 - Kotlin

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!"
}

Solution 5 - Kotlin

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

val myFirstString = "4 / 2 equals ${4 / 2}"
val mySecondString = """The property "hide" was not found"""

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDan WView Question on Stackoverflow
Solution 1 - KotlinPeter NiederwieserView Answer on Stackoverflow
Solution 2 - KotlinJB NizetView Answer on Stackoverflow
Solution 3 - KotlinJulian A.View Answer on Stackoverflow
Solution 4 - KotlinDeepak BhavaleView Answer on Stackoverflow
Solution 5 - KotlinMahozadView Answer on Stackoverflow