Gradle:任务配置方法之间有什么区别吗
下面两段代码之间有什么区别吗Gradle:任务配置方法之间有什么区别吗,gradle,groovy,task,Gradle,Groovy,Task,下面两段代码之间有什么区别吗 任务的快速初始化可能有一些不同吗 tasks.bootJar { archiveFileName = "some-name" } 及 它们实际上是相同的,只是语法不同。两者都会导致任务实现或初始化。您可以通过简单地运行调试输出来确认这一点:/gradlew-d 您将看到以下记录行: [DEBUG][org.gradle.internal.operations.DefaultBuildOperationRunner]生成操作“实现任务:b
任务的快速初始化可能有一些不同吗
tasks.bootJar {
archiveFileName = "some-name"
}
及
它们实际上是相同的,只是语法不同。两者都会导致任务实现或初始化。您可以通过简单地运行调试输出来确认这一点:
/gradlew-d
您将看到以下记录行:
[DEBUG][org.gradle.internal.operations.DefaultBuildOperationRunner]生成操作“实现任务:bootJar”已启动
对于Groovy DSL,Gradle团队利用Groovy语言提供的功能,动态地提供任务、扩展、属性和更多“神奇的”可用性
所以对于这个例子:
tasks.bootJar {
archiveFileName = "some-name"
}
任务
的类型为。如果要检查TaskContainer
的所有可用方法和属性,您将看到bootJar
不是其中之一。因此Gradle钩住Groovy元编程来搜索名为bootJar
的东西。由于它位于TaskContainer
类型上,因此可以假定bootJar
是一个任务
因此,如果要对DSL进行脱胶,第一个示例实际上是:
tasks.getByName("bootJar") {
}
现在来看第二个例子:
bootJar {
archiveFileName = "some-code"
}
Gradle生成文件中的默认作用域或此
。同样,就像前面一样,如果您要检查所有可用的方法和属性,您将不会看到bootJar
Groovy的“魔力”在这里发挥作用,但这一次,Gradle几乎会搜索(我的理解)任何地方,因为项目中有更多可用的功能
project.extensions.named("bootJar") // exists?
project.hasProperty("bootJar") // exists?
project.tasks.getByName("bootJar") // found it!
总之,两者之间没有区别,因为两者都导致实现bootJar
任务。尽可能使用以下工具,以提高Gradle构建的效率:
import org.springframework.boot.gradle.tasks.bundling.BootJar
tasks.named("bootJar", BootJar) {
}
它们实际上是相同的,只是语法不同。两者都会导致任务实现或初始化。您可以通过简单地运行调试输出来确认这一点:/gradlew-d
您将看到以下记录行:
[DEBUG][org.gradle.internal.operations.DefaultBuildOperationRunner]生成操作“实现任务:bootJar”已启动
对于Groovy DSL,Gradle团队利用Groovy语言提供的功能,动态地提供任务、扩展、属性和更多“神奇的”可用性
所以对于这个例子:
tasks.bootJar {
archiveFileName = "some-name"
}
任务
的类型为。如果要检查TaskContainer
的所有可用方法和属性,您将看到bootJar
不是其中之一。因此Gradle钩住Groovy元编程来搜索名为bootJar
的东西。由于它位于TaskContainer
类型上,因此可以假定bootJar
是一个任务
因此,如果要对DSL进行脱胶,第一个示例实际上是:
tasks.getByName("bootJar") {
}
现在来看第二个例子:
bootJar {
archiveFileName = "some-code"
}
Gradle生成文件中的默认作用域或此
。同样,就像前面一样,如果您要检查所有可用的方法和属性,您将不会看到bootJar
Groovy的“魔力”在这里发挥作用,但这一次,Gradle几乎会搜索(我的理解)任何地方,因为项目中有更多可用的功能
project.extensions.named("bootJar") // exists?
project.hasProperty("bootJar") // exists?
project.tasks.getByName("bootJar") // found it!
总之,两者之间没有区别,因为两者都导致实现bootJar
任务。尽可能使用以下工具,以提高Gradle构建的效率:
import org.springframework.boot.gradle.tasks.bundling.BootJar
tasks.named("bootJar", BootJar) {
}