我在网上的例子中拼凑了一个build.gradle文件:
apply plugin: "java"
sourceSets {
java {
srcDirs = ['src']
}
}
repositories {
flatDir {
name "fileRepo"
dirs "repo"
}
}
uploadArchives {
repositories {
add project.repositories.fileRepo
}
}
当我运行gradle tasks --all
时,我可以看到" uploadArchives"是一项任务。如何通过查看build.gradle文件来判断什么是任务?如果"存储库"和" sourceSets"不被认为是任务,它们是什么?
答案 0 :(得分:2)
你根本无法
但是,关于闭包是否配置任务或其他东西的纯粹知识,不会给你任何东西。要了解构建脚本,您需要了解Gradle的基本概念和使用过的插件,无论是内置还是第三方。
每个build.gradle
脚本都针对Project
实例执行。您可以从构建脚本访问的所有内容属于以下范围之一:
Project
对象本身。此范围包括Project实现类声明的任何属性getter和setter。例如,getRootProject()
可以作为rootProject
属性访问。此范围的属性是可读写的,具体取决于是否存在相应的getter或setter方法。- 项目的额外属性。每个项目都维护一个额外属性的映射,其中可以包含任意名称 - >价值对。定义后,此作用域的属性是可读写的。有关详细信息,请参阅extra properties。
- 插件添加到项目中的扩展。每个扩展名都可以作为只读属性使用,其名称与扩展名相同。
- 插件添加到项目中的约定属性。插件可以通过项目的
Convention
对象向项目添加属性和方法。根据约定对象,此范围的属性可以是可读的或可写的。- 项目的任务。可以使用其名称作为属性名称来访问任务。此范围的属性是只读的。例如,名为compile的任务可以作为
compile
属性访问。- 额外的属性和约定属性从项目的父级继承,递归到根项目。此范围的属性是只读的。
对于您的具体示例,uploadArchives
是一项任务,repositories
属于原始Project
对象(在每个构建脚本中都可用),sourceSets
是一个扩展名java
插件。
请注意,许多插件不需要或计划直接任务配置。它们为配置提供DSL扩展,然后根据此配置生成任务。