Gradle Single vs Double Quotes
KotlinGradleGroovybuild.gradleGradle Kotlin-DslKotlin 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"""