72

我是 gradle 的新手,目前只是尝试按照教程进行操作,并且有好几次我看到单引号和双引号混合在一起。我只是想知道何时应该使用一套而不是另一套。这方面的一个例子是教程的第 6.12 节 -默认任务

defaultTasks 'clean', 'run'

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

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

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

所以,我只想知道我是否应该注意这些差异,或者它们是否可以互换,并且在 gradle 中打印字符串时可以使用单引号或双引号。

4

5 回答 5

80

Gradle 构建脚本是用 Groovy 编写的。Groovy 有双引号和单引号字符串字面量。主要区别在于双引号字符串文字支持字符串插值:

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

您可以在网络上的这篇文章或其他 Groovy 文章中了解有关 Groovy 字符串插值的更多信息。

于 2013-03-02T07:53:51.413 回答
14

是的,您可以使用其中一种。唯一的区别是双引号字符串可以是 GStrings,它可以包含计算表达式,如以下从Groovy 文档中获取的示例:

foxtype = 'quick'
foxcolor = ['b', 'r', 'o', 'w', 'n']
println "The $foxtype ${foxcolor.join()} fox"
// => The quick brown fox
于 2013-03-02T07:52:24.923 回答
7

根据 gradle文档

在构建脚本列表中支持纯字符串的单引号

这主要是为了确保指南之间的一致性,但单引号也比双引号少一点噪音。如果要在字符串中包含嵌入式表达式,请仅使用双引号。

于 2019-02-01T02:06:49.373 回答
2

单引号字符串是由单引号包围的一系列字符。喜欢 :

def str='a single quoted string'
println str

输出:

a single quoted string

而双引号字符串允许我们进行字符串插值 在这里,我们有一个带有占位符的字符串引用了一个局部变量:

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

输出 :Hello Guillaume

在您的代码中,如果要打印任务名称。所以在这种情况下,你需要使用双引号:

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!"
}
于 2019-01-10T06:20:11.817 回答
0

Kotlin DSL 文件(如build.gradle.ktssettings.gradle.kts)是常规的 Kotlin 代码。
因此,字符串文字总是用双引号括起来:

val myFirstString = "4 / 2 equals ${4 / 2}"
val mySecondString = """The property "hide" was not found"""
于 2022-02-18T14:27:05.840 回答