Project

API 文档项目

此接口是您用于从构建文件与 Gradle 交互的主要 API。通过 Project,您可以以编程方式访问 Gradle 的所有功能。

生命周期

一个 Project 与一个 build.gradle 文件之间存在一对一的关系。在构建初始化期间,Gradle 为每个参与构建的项目组装一个 Project 对象,具体如下:

  • 为构建创建一个 Settings 实例。
  • 如果存在,评估 settings.gradle 脚本,对照 Settings 对象进行配置。
  • 使用配置好的 Settings 对象创建 Project 实例的层次结构。
  • 最后,通过对每个项目执行其 build.gradle 文件(如果存在)来评估每个 Project。项目以广度优先的顺序进行评估,以便在子项目之前评估一个项目。可以通过调用 Project.evaluationDependsOnChildren() 或使用 Project.evaluationDependsOn(java.lang.String) 添加显式评估依赖项来覆盖此顺序。

任务

一个项目本质上是 Task 对象的集合。每个任务执行一些基本的工作,例如编译类、运行单元测试或打包 WAR 文件。您可以使用 TaskContainer 上的 create() 方法之一将任务添加到项目,例如 TaskContainer.create(java.lang.String)。您可以使用 TaskContainer 上的查找方法之一查找现有任务,例如 TaskCollection.getByName(java.lang.String)

依赖

一个项目通常需要一些依赖才能完成其工作。此外,一个项目通常会生成一些工件,其他项目可以使用这些工件。这些依赖被分组在配置中,并且可以从仓库中检索和上传。您可以使用 ConfigurationContainer(由 Project.getConfigurations() 方法返回)来管理配置。使用 DependencyHandler(由 Project.getDependencies() 方法返回)来管理依赖。使用 ArtifactHandler(由 Project.getArtifacts() 方法返回)来管理工件。使用 RepositoryHandler(由 Project.getRepositories() 方法返回)来管理仓库。

多项目构建

项目被组织成一个项目层次结构。一个项目有一个名称和一个完全限定路径,该路径在层次结构中唯一标识它。

插件

插件可以用于模块化和重用项目配置。可以使用 PluginAware.apply(java.util.Map) 方法应用插件,或者使用 PluginDependenciesSpec 插件脚本块。

动态项目属性

Gradle 会对照 Project 实例执行项目的构建文件来配置项目。脚本使用的任何属性或方法都会委托给关联的 Project 对象。这意味着,您可以在脚本中直接使用 Project 接口上的任何方法和属性。

例如:

defaultTasks('some-task')  // Delegates to Project.defaultTasks()
reportsDir = file('reports') // Delegates to Project.file() and the Java Plugin

您还可以使用 project 属性访问 Project 实例。在某些情况下,这可以使脚本更清晰。例如,您可以使用 project.name 而不是 name 来访问项目的名称。

一个项目有 5 个属性“范围”,它会在这些范围中搜索属性。您可以在构建文件中按名称访问这些属性,或者通过调用项目的 Project.property(java.lang.String) 方法。这些范围是:

  • Project 对象本身。此范围包括由 Project 实现类声明的任何属性 getter 和 setter。例如,Project.getRootProject() 可以作为 rootProject 属性访问。此范围的属性是可读或可写的,取决于是否存在相应的 getter 或 setter 方法。
  • 项目的 额外 属性。每个项目都维护一个额外属性的映射,其中可以包含任意的名称 -> 值对。一旦定义,此范围的属性是可读和可写的。有关更多详细信息,请参见额外属性
  • 插件添加到项目的扩展。每个扩展都作为只读属性提供,其名称与扩展相同。
  • 项目的任务。可以通过将任务名称作为属性名来访问任务。此范围的属性是只读的。例如,名为 compile 的任务可以通过 compile 属性访问。
  • 额外属性和约定属性从项目的父级继承,递归向上直至根项目。此范围的属性是只读的。

当读取属性时,项目按顺序搜索上述范围,并从它找到属性的第一个范围返回该值。如果未找到,则抛出异常。有关更多详细信息,请参见 Project.property(java.lang.String)

写入属性时,项目按顺序搜索上述范围,并在找到属性的第一个范围中设置属性。如果未找到,则抛出异常。有关更多详细信息,请参见 Project.setProperty(java.lang.String, java.lang.Object)

额外属性

所有额外属性都必须通过“ext”命名空间定义。一旦定义了额外属性,它就可以直接在拥有对象(在以下情况下分别为 Project、Task 和子项目)上可用,并且可以读取和更新。只有初始声明需要通过命名空间完成。

project.ext.prop1 = "foo"
task doStuff {
    ext.prop2 = "bar"
}
subprojects { ext.${prop3} = false }

通过“ext”或拥有对象读取额外属性。

ext.isSnapshot = version.endsWith("-SNAPSHOT")
if (isSnapshot) {
    // do snapshot stuff
}

动态方法

一个项目有 5 个方法“作用域”,它会搜索这些作用域中的方法

  • Project 对象本身。
  • 构建文件。项目会在构建文件中搜索匹配的方法声明。
  • 插件添加到项目的扩展。每个扩展都作为一个方法提供,该方法接受一个闭包或 Action 作为参数。
  • 项目的任务。为每个任务添加一个方法,使用任务名称作为方法名,并接受单个闭包或 Action 参数。该方法使用提供的闭包调用关联任务的 Task.configure(groovy.lang.Closure) 方法。例如,如果项目有一个名为 compile 的任务,则会添加一个具有以下签名的方法:void compile(Closure configureClosure)
  • 父项目的方法,递归向上直到根项目。
  • 项目的一个属性,其值是一个闭包。该闭包被视为一个方法,并使用提供的参数调用。该属性的定位如上所述。

属性

属性描述
所有项目

包含此项目及其子项目的集合。

蚂蚁

此项目的 AntBuilder。您可以在构建文件中使用它来执行 Ant 任务。请参见下面的示例。

工件

返回一个处理程序,用于将项目生成的工件分配给配置。

buildDir
废弃 (Deprecated)

此项目的构建目录。构建目录是所有工件生成的目录。构建目录的默认值为 projectDir/build

buildFile

此项目的构建脚本。

buildscript

此项目的构建脚本处理程序。您可以使用此处理程序查询有关此项目构建脚本的详细信息,并管理用于编译和执行项目构建脚本的类路径。

子项目

此项目的直接子级。

配置

此项目的配置。

默认任务

此项目的默认任务名称。这些任务在启动构建时未提供任务名称时使用。

依赖项

此项目的依赖项处理器。返回的依赖项处理器实例可用于添加新的依赖项。对于访问已声明的依赖项,可以使用配置。

依赖项锁定

提供对配置依赖项锁定的访问

描述

此项目的描述(如果有)。

扩展

允许向项目添加 DSL 扩展。对插件作者很有用。

Gradle

此项目所属的 Gradle 调用。

群组

此项目的组。Gradle 总是使用组的 toString() 值。组默认为以点分隔的路径。

布局

提供对此项目的各种重要目录的访问。

记录器

此项目的日志记录器。您可以在构建文件中使用它来写入日志消息。

记录

LoggingManager,可用于接收日志记录并控制此项目构建脚本的标准输出/错误捕获。默认情况下,System.out 被重定向到 Gradle 日志系统,日志级别为 QUIET,System.err 被重定向,日志级别为 ERROR。

名称

此项目的名称。项目的名称在项目层次结构中不一定唯一。您应该使用 Project.getPath() 方法作为项目的唯一标识符。如果根项目未命名并且位于文件系统根目录,它将具有随机生成的名称

标准化

提供对配置输入规范化的访问。

父级

此项目的父项目(如果有)。

路径

此项目的路径。路径是项目的完全限定名称。

pluginManager

此插件感知对象的插件管理器。

插件

已应用于此对象的插件容器。

项目

返回此项目。此方法在构建文件中显式访问项目属性和方法时非常有用。例如,使用 project.name 比使用 name 能更好地表达您的意图。此方法还允许您从属性可能被隐藏的范围(例如,从方法或闭包)访问项目属性。

projectDir

包含项目构建文件的目录。

属性

此项目的属性。有关项目可用属性的详细信息,请参见此处

仓库

返回一个处理程序,用于创建用于检索依赖项和上传项目生成的工件的仓库。

资源

提供对资源特定实用方法的访问,例如创建各种资源的工厂方法。

rootDir

此项目的根目录。根目录是根项目的项目目录。

根项目

此项目所属层次结构的根项目。对于单项目构建,此方法返回此项目。

状态

此项目的评估状态。您可以使用它访问有关此项目评估的信息,例如它是否失败。

状态

此项目的状态。Gradle 总是使用状态的 toString() 值。状态默认为 release

子项目

包含此项目子项目的集合。

任务

此项目的任务。

版本

此项目的版本。Gradle 总是使用版本的 toString() 值。版本默认为 unspecified

application 插件添加的属性

属性描述
应用

application 插件添加的 JavaApplication

checkstyle 插件添加的属性

属性描述
checkstyle

checkstyle 插件添加的 CheckstyleExtension

codenarc 插件添加的属性

属性描述
codenarc

codenarc 插件添加的 CodeNarcExtension

distribution 插件添加的属性

属性描述
分发

由 distribution 插件添加的 DistributionContainer

eclipse 插件添加的属性

属性描述
eclipse

由 eclipse 插件添加的 EclipseModel

idea 插件添加的属性

属性描述
idea

由 idea 插件添加的 IdeaModel

jacoco 插件添加的属性

属性描述
jacoco

由 jacoco 插件添加的 JacocoPluginExtension

java 插件添加的属性

属性描述
基础

由 java 插件添加的 BasePluginExtension

java

由 java 插件添加的 JavaPluginExtension

报告

由 java 插件添加的 ReportingExtension

pmd 插件添加的属性

属性描述
pmd

由 pmd 插件添加的 PmdExtension

publishing 插件添加的属性

属性描述
出版

由 publishing 插件添加的 PublishingExtension

signing 插件添加的属性

属性描述
签名

由 signing 插件添加的 SigningExtension

visual-studio 插件添加的属性

属性描述
visualStudio

由 visual-studio 插件添加的 VisualStudioRootExtension

xcode 插件添加的属性

属性描述
xcode

由 xcode 插件添加的 XcodeRootExtension

方法

方法描述
absoluteProjectPath(path)

将名称转换为绝对项目路径,相对于此项目解析名称。

afterEvaluate(closure)

在此项目评估完成后立即添加一个要调用的闭包。

afterEvaluate(action)

在此项目评估完成后立即添加一个要执行的操作。

allprojects(action)

配置此项目及其每个子项目。

ant(configureAction)

对本项目的 AntBuilder 执行给定操作。您可以在构建文件中使用此操作来执行 Ant 任务。参见 Project.getAnt() 的 javadoc 中的示例

apply(closure)

应用零个或多个插件或脚本。

apply(options)

应用插件或脚本,使用作为映射提供的给定选项。如果插件已应用,则不执行任何操作。

apply(action)

应用零个或多个插件或脚本。

artifacts(configureAction)

配置此项目的已发布工件。

beforeEvaluate(closure)

在此项目评估之前立即添加一个要调用的闭包。

beforeEvaluate(action)

在此项目评估之前立即添加一个要执行的操作。

configure(objects, configureClosure)

通过闭包配置对象集合。这等同于为每个给定对象调用 Project.configure(java.lang.Object, groovy.lang.Closure)

configure(objects, configureAction)

通过一个动作来配置一个对象集合。

configure(object, configureClosure)

通过闭包配置对象,其中闭包的委托设置为所提供的对象。这样您就不必多次指定配置语句的上下文。

container(type)

创建用于管理指定类型命名对象的容器。指定类型必须具有一个接受字符串参数作为名称的公共构造函数。

container(type, factoryClosure)

创建用于管理指定类型命名对象的容器。给定闭包用于创建对象实例。要创建的实例名称作为参数传递给闭包。

container(type, factory)

创建用于管理指定类型命名对象的容器。给定工厂用于创建对象实例。

copy(closure)

复制指定文件。给定的闭包用于配置 CopySpec,然后用于复制文件。示例:

copy(action)

复制指定文件。给定的动作用于配置 CopySpec,然后用于复制文件。

复制规范()

创建 CopySpec,以后可用于复制文件或创建存档。

copySpec(closure)

创建一个 CopySpec,以后可用于复制文件或创建存档。在返回此方法之前,给定的闭包用于配置 CopySpec

copySpec(action)

创建一个 CopySpec,以后可用于复制文件或创建存档。给定的操作用于配置 CopySpec,然后由本方法返回。

defaultTasks(defaultTasks)

设置此项目的默认任务名称。这些任务在启动构建时未提供任务名称时使用。

delete(paths)

删除文件和目录。

delete(action)

删除指定文件。给定的动作用于配置一个 DeleteSpec,然后用于删除文件。

dependencyLocking(configuration)

配置依赖锁定

evaluationDependsOn(path)

声明此项目对给定路径的项目具有评估依赖。

file(path)

解析相对于此项目项目目录的文件路径。此方法根据其类型转换提供的路径

file(path, validation)

解析相对于此项目目录的文件路径,并使用给定方案验证它。有关可能验证的列表,请参见 PathValidation

fileTree(baseDir)

使用给定的基本目录创建一个新的 ConfigurableFileTree。给定的 baseDir 路径根据 Project.file(java.lang.Object) 进行评估。

fileTree(baseDir, configureClosure)

使用给定的基本目录创建一个新的 ConfigurableFileTree。给定的 baseDir 路径根据 Project.file(java.lang.Object) 进行评估。闭包将用于配置新的文件树。文件树作为其委托传递给闭包。示例:

fileTree(baseDir, configureAction)

使用给定的基本目录创建一个新的 ConfigurableFileTree。给定的 baseDir 路径根据 Project.file(java.lang.Object) 进行评估。该操作将用于配置新的文件树。示例:

fileTree(args)

使用提供的参数映射创建一个新的 ConfigurableFileTree。该映射将作为属性应用于新的文件树。示例

files(paths, configureClosure)

使用给定路径创建一个新的 ConfigurableFileCollection。这些路径根据 Project.files(java.lang.Object[]) 进行评估。文件集合使用给定闭包进行配置。文件集合作为其委托传递给闭包。示例

files(paths, configureAction)

使用给定路径创建一个新的 ConfigurableFileCollection。这些路径根据 Project.files(java.lang.Object[]) 进行评估。文件集合使用给定操作进行配置。示例

files(paths)

返回包含给定文件的 ConfigurableFileCollection。您可以将以下任何类型传递给此方法

findProject(path)

按路径定位项目。如果路径是相对路径,则相对于此项目进行解释。

findProperty(propertyName)

返回给定属性的值,如果未找到则返回 null。此方法按以下方式定位属性

getAllTasks(recursive)

返回此项目(可选地,包括其子项目)中包含的任务的映射。

getTasksByName(name, recursive)

返回此项目(可选地,包括其子项目)中包含的具有给定名称的任务集合。注意:这是一项昂贵的操作,因为它需要配置所有项目。

hasProperty(propertyName)

确定此项目是否具有给定属性。有关项目可用属性的详细信息,请参见此处

mkdir(path)

创建目录并返回指向它的文件。

normalization(configuration)

配置输入标准化。

project(path)

按路径定位项目。如果路径是相对路径,则相对于此项目进行解释。

project(path, configureClosure)

按路径定位项目,并使用给定闭包进行配置。如果路径是相对路径,则相对于此项目进行解释。目标项目作为闭包的委托传递给闭包。

project(path, configureAction)

通过路径定位项目,并使用给定动作进行配置。如果路径是相对路径,则相对于此项目进行解释。

property(propertyName)

返回给定属性的值。此方法按以下方式定位属性:

relativePath(path)

返回从项目目录到给定路径的相对路径。给定路径对象(逻辑上)按照 Project.file(java.lang.Object) 的描述进行解析,从中计算出相对路径。

relativeProjectPath(path)

将名称转换为相对于此项目的项目路径。

setProperty(name, value)

设置此项目的属性。此方法在以下位置搜索具有给定名称的属性,并在找到属性的第一个位置设置该属性。

subprojects(action)

配置此项目的子项目

sync(action)

将目标目录的内容与某些源目录和文件同步。给定的操作用于配置 SyncSpec,然后用于同步文件。

tarTree(tarPath)

创建一个包含给定 TAR 文件内容的新 FileTree。给定 tarPath 路径可以是

task(name)
废弃 (Deprecated)

创建一个名为 Task 并将其添加到此项目。调用此方法等同于使用空选项映射调用 Project.task(java.util.Map, java.lang.String)

task(name, configureClosure)
废弃 (Deprecated)

创建一个名为 Task 并将其添加到此项目。在返回任务之前,执行给定的闭包来配置任务。

task(name, configureAction)
废弃 (Deprecated)

创建一个名为 Task 并将其添加到此项目。在返回任务之前,执行给定操作以配置任务。

task(args, name)
废弃 (Deprecated)

创建一个具有给定名称的 Task 并将其添加到此项目。可以将创建选项映射传递给此方法以控制任务的创建方式。可用的选项如下:

task(args, name, configureClosure)
废弃 (Deprecated)

创建一个具有给定名称的 Task 并将其添加到此项目。在返回任务之前,执行给定的闭包来配置任务。可以将创建选项映射传递给此方法以控制任务的创建方式。有关可用选项,请参见 Project.task(java.util.Map, java.lang.String)

uri(path)

将文件路径解析为 URI,相对于此项目的项目目录。评估所提供的路径对象,如 Project.file(java.lang.Object) 所述,但支持任何 URI 方案,而不仅仅是“file:”URI。

zipTree(zipPath)

创建一个包含给定 ZIP 文件内容的新 FileTree。给定 zipPath 路径按照 Project.file(java.lang.Object) 进行评估。您可以将此方法与 Project.copy(org.gradle.api.Action) 方法结合使用以解压 ZIP 文件。

脚本块

描述
所有项目

配置此项目及其每个子项目。

蚂蚁

对本项目的 AntBuilder 执行给定的闭包。您可以在构建文件中使用此操作来执行 Ant 任务。AntBuild 作为闭包的委托传递给闭包。参见 Project.getAnt() 的 javadoc 中的示例

工件

配置此项目的已发布工件。

buildscript

配置此项目的构建脚本类路径。

配置

配置此项目的依赖配置。

依赖项

配置此项目的依赖项。

仓库

配置此项目的仓库。

子项目

配置此项目的子项目。

application 插件添加的脚本块

描述
应用

配置 application 插件添加的 JavaApplication

checkstyle 插件添加的脚本块

描述
checkstyle

配置 checkstyle 插件添加的 CheckstyleExtension

codenarc 插件添加的脚本块

描述
codenarc

配置 codenarc 插件添加的 CodeNarcExtension

distribution 插件添加的脚本块

描述
分发

配置由 distribution 插件添加的 DistributionContainer

eclipse 插件添加的脚本块

描述
eclipse

配置 eclipse 插件添加的 EclipseModel

idea 插件添加的脚本块

描述
idea

配置 idea 插件添加的 IdeaModel

jacoco 插件添加的脚本块

描述
jacoco

配置 jacoco 插件添加的 JacocoPluginExtension

java 插件添加的脚本块

描述
基础

配置由 java 插件添加的 BasePluginExtension

java

配置由 java 插件添加的 JavaPluginExtension

报告

配置由 java 插件添加的 ReportingExtension

pmd 插件添加的脚本块

描述
pmd

配置 pmd 插件添加的 PmdExtension

publishing 插件添加的脚本块

描述
出版

配置由 publishing 插件添加的 PublishingExtension

signing 插件添加的脚本块

描述
签名

配置由 signing 插件添加的 SigningExtension

visual-studio 插件添加的脚本块

描述
visualStudio

配置由 visual-studio 插件添加的 VisualStudioRootExtension

xcode 插件添加的脚本块

描述
xcode

配置由 xcode 插件添加的 XcodeRootExtension

属性详情

Set<Project> allprojects (只读)

包含此项目及其子项目的集合。

AntBuilder ant (只读)

此项目的 AntBuilder。您可以在构建文件中使用它来执行 Ant 任务。请参见下面的示例。

task printChecksum {
  doLast {
    ant {
      //using ant checksum task to store the file checksum in the checksumOut ant property
      checksum(property: 'checksumOut', file: 'someFile.txt')

      //we can refer to the ant property created by checksum task:
      println "The checksum is: " + checksumOut
    }

    //we can refer to the ant property later as well:
    println "I just love to print checksums: " + ant.checksumOut
  }
}

请考虑以下 Ant 目标示例

<target name='printChecksum'>
  <checksum property='checksumOut'>
    <fileset dir='.'>
      <include name='agile.txt'/>
    </fileset>
  </checksum>
  <echo>The checksum is: ${checksumOut}</echo>
</target>

以下是它在 Gradle 中的样子。请注意 Ant XML 是如何通过 Ant 构建器在 Groovy 中表示的

task printChecksum {
  doLast {
    ant {
      checksum(property: 'checksumOut') {
        fileset(dir: '.') {
          include name: 'agile1.txt'
        }
      }
    }
    logger.lifecycle("The checksum is $ant.checksumOut")
  }
}

ArtifactHandler artifacts (只读)

返回一个处理程序,用于将项目生成的工件分配给配置。

示例:请参见 ArtifactHandler 的文档

File buildDir

注意:此属性已弃用,并将在 Gradle 的下一个主要版本中删除。

此项目的构建目录。构建目录是所有工件生成的目录。构建目录的默认值为 projectDir/build

File buildFile (只读)

此项目的构建脚本。

如果文件存在,则在配置此项目时,将根据此项目评估该文件。

ScriptHandler buildscript (只读)

此项目的构建脚本处理程序。您可以使用此处理程序查询有关此项目构建脚本的详细信息,并管理用于编译和执行项目构建脚本的类路径。

Map<String, Project> childProjects (只读)

此项目的直接子级。

ConfigurationContainer configurations (只读)

此项目的配置。

示例:参见 ConfigurationContainer 的文档

List<String> defaultTasks

此项目的默认任务名称。这些任务在启动构建时未提供任务名称时使用。

DependencyHandler dependencies (只读)

此项目的依赖项处理器。返回的依赖项处理器实例可用于添加新的依赖项。对于访问已声明的依赖项,可以使用配置。

示例:参见 DependencyHandler 的文档

DependencyLockingHandler dependencyLocking (只读)

提供对配置依赖项锁定的访问

String description

此项目的描述(如果有)。

ExtensionContainer extensions (只读)

允许向项目添加 DSL 扩展。对插件作者很有用。

Gradle gradle (只读)

此项目所属的 Gradle 调用。

Object group

此项目的组。Gradle 总是使用组的 toString() 值。组默认为以点分隔的路径。

ProjectLayout layout (只读)

提供对此项目的各种重要目录的访问。

Logger logger (只读)

此项目的日志记录器。您可以在构建文件中使用它来写入日志消息。

LoggingManager logging (只读)

LoggingManager,可用于接收日志记录并控制此项目构建脚本的标准输出/错误捕获。默认情况下,System.out 被重定向到 Gradle 日志系统,日志级别为 QUIET,System.err 被重定向,日志级别为 ERROR。

String name (只读)

此项目的名称。项目的名称在项目层次结构中不一定唯一。您应该使用 Project.getPath() 方法作为项目的唯一标识符。如果根项目未命名并且位于文件系统根目录,它将具有随机生成的名称

InputNormalizationHandler normalization (只读)

提供对配置输入规范化的访问。

Project parent (只读)

此项目的父项目(如果有)。

String path (只读)

此项目的路径。路径是项目的完全限定名称。

PluginManager pluginManager (只读)

此插件感知对象的插件管理器。

PluginContainer plugins (只读)

已应用于此对象的插件容器。

虽然没有弃用,但更倾向于使用此接口的方法或 PluginAware.getPluginManager(),而不是使用插件容器。

请使用此接口或 PluginAware.getPluginManager() 上的“apply”方法之一来应用插件,而不是通过插件容器应用。

使用 PluginManager.hasPlugin(java.lang.String) 或类似方法查询插件的应用,而不是通过插件容器进行查询。

Project project (只读)

返回此项目。此方法在构建文件中显式访问项目属性和方法时非常有用。例如,使用 project.name 比使用 name 能更好地表达您的意图。此方法还允许您从属性可能被隐藏的范围(例如,从方法或闭包)访问项目属性。

File projectDir (只读)

包含项目构建文件的目录。

Map<String, ? extends Object> properties (只读)

此项目的属性。有关项目可用属性的详细信息,请参见此处

RepositoryHandler repositories (只读)

返回一个处理程序,用于创建用于检索依赖项和上传项目生成的工件的仓库。

ResourceHandler resources (只读)

提供对资源特定实用方法的访问,例如创建各种资源的工厂方法。

File rootDir (只读)

此项目的根目录。根目录是根项目的项目目录。

Project rootProject (只读)

此项目所属层次结构的根项目。对于单项目构建,此方法返回此项目。

ProjectState state (只读)

此项目的评估状态。您可以使用它访问有关此项目评估的信息,例如它是否失败。

Object status

此项目的状态。Gradle 总是使用状态的 toString() 值。状态默认为 release

项目状态仅在您上传带有模块描述符的库时才相关。此处指定的状态将成为此模块描述符的一部分。

Set<Project> subprojects (只读)

包含此项目子项目的集合。

TaskContainer tasks (只读)

此项目的任务。

Object version

此项目的版本。Gradle 总是使用版本的 toString() 值。版本默认为 unspecified

JavaApplication application (只读)

application 插件添加的 JavaApplication

CheckstyleExtension checkstyle (只读)

checkstyle 插件添加的 CheckstyleExtension

CodeNarcExtension codenarc (只读)

codenarc 插件添加的 CodeNarcExtension

DistributionContainer distributions (只读)

由 distribution 插件添加的 DistributionContainer

EclipseModel eclipse (只读)

由 eclipse 插件添加的 EclipseModel

IdeaModel idea (只读)

由 idea 插件添加的 IdeaModel

JacocoPluginExtension jacoco (只读)

由 jacoco 插件添加的 JacocoPluginExtension

BasePluginExtension base (只读)

由 java 插件添加的 BasePluginExtension

JavaPluginExtension java (只读)

由 java 插件添加的 JavaPluginExtension

ReportingExtension reporting (只读)

由 java 插件添加的 ReportingExtension

PmdExtension pmd (只读)

由 pmd 插件添加的 PmdExtension

PublishingExtension publishing (只读)

由 publishing 插件添加的 PublishingExtension

SigningExtension signing (只读)

由 signing 插件添加的 SigningExtension

VisualStudioRootExtension visualStudio (只读)

由 visual-studio 插件添加的 VisualStudioRootExtension

XcodeRootExtension xcode (只读)

由 xcode 插件添加的 XcodeRootExtension

方法详情

String absoluteProjectPath(String path)

将名称转换为绝对项目路径,相对于此项目解析名称。

void afterEvaluate(Closure closure)

在此项目评估完成后立即添加一个要调用的闭包。

void afterEvaluate(Action<? super Project> action)

在此项目评估完成后立即添加一个要执行的操作。

将项目作为参数传递给操作。传递给此方法的动作按其传递的相同顺序执行。父项目可以向其子项目添加一个动作,以便在构建文件运行后根据其状态进一步配置这些项目。

如果项目已被评估,此方法将失败。

如果在 `afterEvaluate` 动作中调用此方法,则传递的动作将在所有先前添加的 `afterEvaluate` 动作执行完成后执行。

void allprojects(Action<? super Project> action)

配置此项目及其每个子项目。

此方法对本项目及其所有子项目执行给定的 Action

AntBuilder ant(Action<? super AntBuilder> configureAction)

对本项目的 AntBuilder 执行给定操作。您可以在构建文件中使用此操作来执行 Ant 任务。参见 Project.getAnt() 的 javadoc 中的示例

void apply(Closure closure)

应用零个或多个插件或脚本。

给定的闭包用于配置 ObjectConfigurationAction,它“构建”插件应用程序。

此方法与 PluginAware.apply(java.util.Map) 的区别在于它允许多次调用配置操作的方法。

void apply(Map<String, ?> options)

应用插件或脚本,使用作为映射提供的给定选项。如果插件已应用,则不执行任何操作。

给定的映射将作为一系列方法调用应用于新创建的 ObjectConfigurationAction。也就是说,映射中的每个键都应为 ObjectConfigurationAction 的方法名,并且其值应为与该方法兼容的参数。

可用的选项如下

  • from:要应用的脚本。接受 Project.uri(java.lang.Object) 支持的任何路径。
  • plugin:要应用的插件的 ID 或实现类。
  • to:目标委托对象或对象。默认为此插件感知对象。使用此项可配置除此对象之外的其他对象。

void apply(Action<? super ObjectConfigurationAction> action)

应用零个或多个插件或脚本。

给定的闭包用于配置 ObjectConfigurationAction,它“构建”插件应用程序。

此方法与 PluginAware.apply(java.util.Map) 的区别在于它允许多次调用配置操作的方法。

void artifacts(Action<? super ArtifactHandler> configureAction)

配置此项目的已发布工件。

此方法对本项目的 ArtifactHandler 执行给定的操作。

示例

configurations {
  //declaring new configuration that will be used to associate with artifacts
  schema
}

task schemaJar(type: Jar) {
  //some imaginary task that creates a jar artifact with the schema
}

//associating the task that produces the artifact with the configuration
artifacts {
  //configuration name and the task:
  schema schemaJar
}

void beforeEvaluate(Closure closure)

在此项目评估之前立即添加一个要调用的闭包。

void beforeEvaluate(Action<? super Project> action)

在此项目评估之前立即添加一个要执行的操作。

将项目作为参数传递给动作。传递给此方法的动作按其传递的相同顺序执行。

如果项目已被评估,则该动作永远不会执行。

如果您在 `beforeEvaluate` 动作中调用此方法,则传递的动作永远不会执行。

Iterable<?> configure(Iterable<?> objects, Closure configureClosure)

通过闭包配置对象集合。这等同于为每个给定对象调用 Project.configure(java.lang.Object, groovy.lang.Closure)

Iterable<T> configure(Iterable<T> objects, Action<? super T> configureAction)

通过一个动作来配置一个对象集合。

Object configure(Object object, Closure configureClosure)

通过闭包配置对象,其中闭包的委托设置为所提供的对象。这样您就不必多次指定配置语句的上下文。

替代方法

MyType myType = new MyType()
myType.doThis()
myType.doThat()

你可以这样做

MyType myType = configure(new MyType()) {
    doThis()
    doThat()
}

被配置的对象也会作为参数传递给闭包,因此如果需要,您可以显式访问它

configure(someObj) { obj -> obj.doThis() }

NamedDomainObjectContainer<T> container(Class<T> type)

创建用于管理指定类型命名对象的容器。指定类型必须具有一个接受字符串参数作为名称的公共构造函数。

所有对象 必须 将其名称作为名为“name”的bean属性公开。在对象的生命周期内,名称必须保持不变。

NamedDomainObjectContainer<T> container(Class<T> type, Closure factoryClosure)

创建用于管理指定类型命名对象的容器。给定闭包用于创建对象实例。要创建的实例名称作为参数传递给闭包。

所有对象 必须 将其名称作为名为“name”的bean属性公开。在对象的生命周期内,名称必须保持不变。

创建用于管理指定类型命名对象的容器。给定工厂用于创建对象实例。

所有对象 必须 将其名称作为名为“name”的bean属性公开。在对象的生命周期内,名称必须保持不变。

WorkResult copy(Closure closure)

复制指定文件。给定的闭包用于配置 CopySpec,然后用于复制文件。示例:

copy {
   from configurations.runtimeClasspath
   into 'build/deploy/lib'
}

请注意,CopySpec可以嵌套

copy {
   into 'build/webroot'
   exclude '**/.svn/**'
   from('src/main/webapp') {
      include '**/*.jsp'
      filter(ReplaceTokens, tokens:[copyright:'2009', version:'2.3.1'])
   }
   from('src/main/js') {
      include '**/*.js'
   }
}

WorkResult copy(Action<? super CopySpec> action)

复制指定文件。给定的动作用于配置 CopySpec,然后用于复制文件。

CopySpec copySpec()

创建 CopySpec,以后可用于复制文件或创建存档。

CopySpec copySpec(Closure closure)

创建一个 CopySpec,以后可用于复制文件或创建存档。在返回此方法之前,给定的闭包用于配置 CopySpec

def baseSpec = copySpec {
   from "source"
   include "**/*.java"
}

task copy(type: Copy) {
   into "target"
   with baseSpec
}

CopySpec copySpec(Action<? super CopySpec> action)

创建一个 CopySpec,以后可用于复制文件或创建存档。给定的操作用于配置 CopySpec,然后由本方法返回。

void defaultTasks(String... defaultTasks)

设置此项目的默认任务名称。这些任务在启动构建时未提供任务名称时使用。

boolean delete(Object... paths)

删除文件和目录。

这将不跟踪符号链接。如果您也需要跟踪符号链接,请使用 Project.delete(org.gradle.api.Action)

WorkResult delete(Action<? super DeleteSpec> action)

删除指定文件。给定的动作用于配置一个 DeleteSpec,然后用于删除文件。

示例

project.delete {
    delete 'somefile'
    followSymlinks = true
}

void dependencyLocking(Action<? super DependencyLockingHandler> configuration)

配置依赖锁定

Project evaluationDependsOn(String path)

声明此项目对给定路径的项目具有评估依赖。

File file(Object path)

解析相对于此项目项目目录的文件路径。此方法根据其类型转换提供的路径

  • 一个 CharSequence,包括 StringGString。相对于项目目录解析。以 `file:` 开头的字符串被视为文件 URL。
  • 一个 File。如果文件是绝对文件,则按原样返回。否则,文件的路径相对于项目目录解析。
  • 一个 Path。路径必须与默认提供程序关联,并以与 File 实例相同的方式处理。
  • 一个 URIURL。URL 的路径被解释为文件路径。仅支持 `file:` URL。
  • 一个 DirectoryRegularFile
  • 任何受支持类型的 Provider。提供程序的值将递归解析。
  • 一个 TextResource
  • 一个 Groovy Closure 或 Kotlin 函数,返回任何受支持的类型。闭包的返回值将递归解析。
  • 一个 Callable,返回任何受支持的类型。可调用对象返回的值将递归解析。

File file(Object path, PathValidation validation)

解析相对于此项目目录的文件路径,并使用给定方案验证它。有关可能验证的列表,请参见 PathValidation

ConfigurableFileTree fileTree(Object baseDir)

使用给定的基本目录创建一个新的 ConfigurableFileTree。给定的 baseDir 路径根据 Project.file(java.lang.Object) 进行评估。

返回的文件树是惰性的,因此它只在查询文件树内容时扫描文件。文件树也是实时的,因此它在每次查询文件树内容时都会扫描文件。

def myTree = fileTree("src")
myTree.include "**/*.java"
myTree.builtBy "someTask"

task copy(type: Copy) {
   from myTree
}

即使在同一台计算机上,FileTree 中文件的顺序也不稳定。

ConfigurableFileTree fileTree(Object baseDir, Closure configureClosure)

使用给定的基本目录创建一个新的 ConfigurableFileTree。给定的 baseDir 路径根据 Project.file(java.lang.Object) 进行评估。闭包将用于配置新的文件树。文件树作为其委托传递给闭包。示例:

def myTree = fileTree('src') {
   exclude '**/.data/**'
   builtBy 'someTask'
}

task copy(type: Copy) {
   from myTree
}

返回的文件树是惰性的,因此它只在查询文件树内容时扫描文件。文件树也是实时的,因此它在每次查询文件树内容时都会扫描文件。

即使在同一台计算机上,FileTree 中文件的顺序也不稳定。

ConfigurableFileTree fileTree(Object baseDir, Action<? super ConfigurableFileTree> configureAction)

使用给定的基本目录创建一个新的 ConfigurableFileTree。给定的 baseDir 路径根据 Project.file(java.lang.Object) 进行评估。该操作将用于配置新的文件树。示例:

def myTree = fileTree('src') {
   exclude '**/.data/**'
   builtBy 'someTask'
}

task copy(type: Copy) {
   from myTree
}

返回的文件树是惰性的,因此它只在查询文件树内容时扫描文件。文件树也是实时的,因此它在每次查询文件树内容时都会扫描文件。

即使在同一台计算机上,FileTree 中文件的顺序也不稳定。

ConfigurableFileTree fileTree(Map<String, ?> args)

使用提供的参数映射创建一个新的 ConfigurableFileTree。该映射将作为属性应用于新的文件树。示例

def myTree = fileTree(dir:'src', excludes:['**/ignore/**', '**/.data/**'])

task copy(type: Copy) {
    from myTree
}

返回的文件树是惰性的,因此它只在查询文件树内容时扫描文件。文件树也是实时的,因此它在每次查询文件树内容时都会扫描文件。

即使在同一台计算机上,FileTree 中文件的顺序也不稳定。

ConfigurableFileCollection files(Object paths, Closure configureClosure)

使用给定路径创建一个新的 ConfigurableFileCollection。这些路径根据 Project.files(java.lang.Object[]) 进行评估。文件集合使用给定闭包进行配置。文件集合作为其委托传递给闭包。示例

files "$buildDir/classes" {
    builtBy 'compile'
}

返回的文件集合是惰性的,因此只有在查询文件集合内容时才会评估路径。文件集合也是实时的,因此每次查询集合内容时都会评估上述内容。

使用给定路径创建一个新的 ConfigurableFileCollection。这些路径根据 Project.files(java.lang.Object[]) 进行评估。文件集合使用给定操作进行配置。示例

files "$buildDir/classes" {
    builtBy 'compile'
}

返回的文件集合是惰性的,因此只有在查询文件集合内容时才会评估路径。文件集合也是实时的,因此每次查询集合内容时都会评估上述内容。

返回包含给定文件的 ConfigurableFileCollection。您可以将以下任何类型传递给此方法

  • 一个 CharSequence,包括 StringGString。相对于项目目录解析,如同 Project.file(java.lang.Object)。以 `file:` 开头的字符串被视为文件 URL。
  • 一个 File。相对于项目目录解析,如同 Project.file(java.lang.Object)
  • 一个 Path,如同 Project.file(java.lang.Object)
  • 一个 URIURL。URL 的路径被解释为文件路径。仅支持 `file:` URL。
  • 一个 DirectoryRegularFile
  • 一个 CollectionIterable 或包含任何受支持类型对象的数组。集合中的元素将递归转换为文件。
  • 一个 FileCollection。集合的内容包含在返回的集合中。
  • 一个 FileTreeDirectoryTree。树的内容包含在返回的集合中。
  • 任何受支持类型的 Provider。提供程序的值将递归转换为文件。如果提供程序表示任务的输出,并且该文件集合用作另一个任务的输入,则该任务将执行。
  • 一个 Callable,返回任何受支持的类型。`call()` 方法的返回值将递归转换为文件。`null` 返回值被视为空集合。
  • 一个 Groovy Closure 或 Kotlin 函数,返回此处列出的任何类型。闭包的返回值将递归转换为文件。`null` 返回值被视为空集合。
  • 一个 Task。转换为任务的输出文件。如果文件集合用作另一个任务的输入,则该任务将执行。
  • 一个 TaskOutputs。转换为相关任务的输出文件。如果文件集合用作另一个任务的输入,则该任务将执行。
  • 其他任何情况都被视为错误。

返回的文件集合是惰性的,因此只有在查询文件集合内容时才会评估路径。文件集合也是实时的,因此每次查询集合内容时都会评估上述内容。

返回的文件集合保持所提供路径的迭代顺序。

返回的文件集合维护生成文件的任务的详细信息,以便如果此文件集合用作某个任务的输入,则这些任务将执行。

此方法还可用于创建空集合,该集合以后可以修改以添加元素。

Project findProject(String path)

按路径定位项目。如果路径是相对路径,则相对于此项目进行解释。

Object findProperty(String propertyName)

返回给定属性的值,如果未找到则返回 null。此方法按以下方式定位属性

  1. 如果此项目对象具有给定名称的属性,则返回该属性的值。
  2. 如果此项目具有给定名称的扩展,则返回该扩展。
  3. 如果此项目的约定对象具有给定名称的属性,则返回该属性的值。
  4. 如果此项目具有给定名称的额外属性,则返回该属性的值。
  5. 如果此项目具有给定名称的任务,则返回该任务。
  6. 在此项目的祖先项目中向上搜索具有给定名称的约定属性或额外属性。
  7. 如果未找到,则返回 null 值。

Map<Project, Set<Task>> getAllTasks(boolean recursive)

返回此项目(可选地,包括其子项目)中包含的任务的映射。

Set<Task> getTasksByName(String name, boolean recursive)

返回此项目(可选地,包括其子项目)中包含的具有给定名称的任务集合。注意:这是一项昂贵的操作,因为它需要配置所有项目。

boolean hasProperty(String propertyName)

确定此项目是否具有给定属性。有关项目可用属性的详细信息,请参见此处

File mkdir(Object path)

创建目录并返回指向它的文件。

void normalization(Action<? super InputNormalizationHandler> configuration)

配置输入标准化。

Project project(String path)

按路径定位项目。如果路径是相对路径,则相对于此项目进行解释。

Project project(String path, Closure configureClosure)

按路径定位项目,并使用给定闭包进行配置。如果路径是相对路径,则相对于此项目进行解释。目标项目作为闭包的委托传递给闭包。

Project project(String path, Action<? super Project> configureAction)

通过路径定位项目,并使用给定动作进行配置。如果路径是相对路径,则相对于此项目进行解释。

Object property(String propertyName)

返回给定属性的值。此方法按以下方式定位属性:

  1. 如果此项目对象具有给定名称的属性,则返回该属性的值。
  2. 如果此项目具有给定名称的扩展,则返回该扩展。
  3. 如果此项目的约定对象具有给定名称的属性,则返回该属性的值。
  4. 如果此项目具有给定名称的额外属性,则返回该属性的值。
  5. 如果此项目具有给定名称的任务,则返回该任务。
  6. 在此项目的祖先项目中向上搜索具有给定名称的约定属性或额外属性。
  7. 如果未找到,则抛出 MissingPropertyException

String relativePath(Object path)

返回从项目目录到给定路径的相对路径。给定路径对象(逻辑上)按照 Project.file(java.lang.Object) 的描述进行解析,从中计算出相对路径。

String relativeProjectPath(String path)

将名称转换为相对于此项目的项目路径。

void setProperty(String name, Object value)

设置此项目的属性。此方法在以下位置搜索具有给定名称的属性,并在找到属性的第一个位置设置该属性。

  1. 项目对象本身。例如,`rootDir` 项目属性。
  2. 项目的额外属性。

如果未找到属性,则抛出 MissingPropertyException

void subprojects(Action<? super Project> action)

配置此项目的子项目

此方法对此项目的所有子项目执行给定的 Action

WorkResult sync(Action<? super SyncSpec> action)

将目标目录的内容与某些源目录和文件同步。给定的操作用于配置 SyncSpec,然后用于同步文件。

此方法类似于 Project.copy(org.gradle.api.Action) 任务,但目标目录将只包含复制的文件。除非指定了保留选项,否则目标目录中存在的所有文件将在复制文件之前被删除。

示例

project.sync {
   from 'my/shared/dependencyDir'
   into 'build/deps/compile'
}

请注意,您可以保留目标目录中已有的输出

project.sync {
    from 'source'
    into 'dest'
    preserve {
        include 'extraDir/**'
        include 'dir1/**'
        exclude 'dir1/extra.txt'
    }
}

FileTree tarTree(Object tarPath)

创建一个包含给定 TAR 文件内容的新 FileTree。给定 tarPath 路径可以是

返回的文件树是惰性的,因此它只在查询文件树内容时扫描文件。文件树也是实时的,因此它在每次查询文件树内容时都会扫描文件。

除非传递资源的自定义实现,否则 tar 树会尝试根据文件扩展名猜测压缩方式。

您可以将此方法与 Project.copy(org.gradle.api.Action) 方法结合使用以解压 TAR 文件

task untar(type: Copy) {
  from tarTree('someCompressedTar.gzip')

  //tar tree attempts to guess the compression based on the file extension
  //however if you must specify the compression explicitly you can:
  from tarTree(resources.gzip('someTar.ext'))

  //in case you work with unconventionally compressed tars
  //you can provide your own implementation of a ReadableResource:
  //from tarTree(yourOwnResource as ReadableResource)

  into 'dest'
}

Task task(String name)

注意:此方法已弃用,并将在下一个主要版本的 Gradle 中删除。

创建一个名为 Task 并将其添加到此项目。调用此方法等同于使用空选项映射调用 Project.task(java.util.Map, java.lang.String)

将任务添加到项目后,它将作为项目的一个属性提供,以便您可以在构建文件中通过名称引用该任务。有关更多详细信息,请参阅属性

如果此项目中已存在具有给定名称的任务,则抛出异常。

Task task(String name, Closure configureClosure)

注意:此方法已弃用,并将在下一个主要版本的 Gradle 中删除。

创建一个名为 Task 并将其添加到此项目。在返回任务之前,执行给定的闭包来配置任务。

将任务添加到项目后,它将作为项目的一个属性提供,以便您可以在构建文件中通过名称引用该任务。有关更多详细信息,请参阅此处

Task task(String name, Action<? super Task> configureAction)

注意:此方法已弃用,并将在下一个主要版本的 Gradle 中删除。

创建一个名为 Task 并将其添加到此项目。在返回任务之前,执行给定操作以配置任务。

将任务添加到项目后,它将作为项目的一个属性提供,以便您可以在构建文件中通过名称引用该任务。有关更多详细信息,请参阅此处

Task task(Map<String, ?> args, String name)

注意:此方法已弃用,并将在下一个主要版本的 Gradle 中删除。

创建一个具有给定名称的 Task 并将其添加到此项目。可以将创建选项映射传递给此方法以控制任务的创建方式。可用的选项如下:

允许的映射键
选项描述默认值
类型要创建的任务的类。DefaultTask
覆盖替换现有任务?false
dependsOn此任务所依赖的任务名称或任务名称集合[]
动作要添加到任务的闭包或 Actionnull
描述任务的描述。null
群组此任务所属的任务组。null

将任务添加到项目后,它将作为项目的一个属性提供,以便您可以在构建文件中通过名称引用该任务。有关更多详细信息,请参阅此处

如果此项目中已存在具有给定名称的任务,并且 `override` 选项未设置为 true,则抛出异常。

Task task(Map<String, ?> args, String name, Closure configureClosure)

注意:此方法已弃用,并将在下一个主要版本的 Gradle 中删除。

创建一个具有给定名称的 Task 并将其添加到此项目。在返回任务之前,执行给定的闭包来配置任务。可以将创建选项映射传递给此方法以控制任务的创建方式。有关可用选项,请参见 Project.task(java.util.Map, java.lang.String)

将任务添加到项目后,它将作为项目的一个属性提供,以便您可以在构建文件中通过名称引用该任务。有关更多详细信息,请参阅此处

如果此项目中已存在具有给定名称的任务,并且 `override` 选项未设置为 true,则抛出异常。

URI uri(Object path)

将文件路径解析为 URI,相对于此项目的项目目录。评估所提供的路径对象,如 Project.file(java.lang.Object) 所述,但支持任何 URI 方案,而不仅仅是“file:”URI。

FileTree zipTree(Object zipPath)

创建一个包含给定 ZIP 文件内容的新 FileTree。给定 zipPath 路径按照 Project.file(java.lang.Object) 进行评估。您可以将此方法与 Project.copy(org.gradle.api.Action) 方法结合使用以解压 ZIP 文件。

返回的文件树是惰性的,因此它只在查询文件树内容时扫描文件。文件树也是实时的,因此它在每次查询文件树内容时都会扫描文件。

脚本块详情

allprojects { }

配置此项目及其每个子项目。

此方法针对本项目及其子项目执行给定的闭包。目标 Project 作为闭包的委托传递给闭包。

委托给
allprojects 中的每个 Project

ant { }

对本项目的 AntBuilder 执行给定的闭包。您可以在构建文件中使用此操作来执行 Ant 任务。AntBuild 作为闭包的委托传递给闭包。参见 Project.getAnt() 的 javadoc 中的示例

委托给
来自 antAntBuilder

artifacts { }

配置此项目的已发布工件。

此方法针对此项目的 ArtifactHandler 执行给定的闭包。ArtifactHandler 作为闭包的委托传递给闭包。

示例

configurations {
  //declaring new configuration that will be used to associate with artifacts
  schema
}

task schemaJar(type: Jar) {
  //some imaginary task that creates a jar artifact with the schema
}

//associating the task that produces the artifact with the configuration
artifacts {
  //configuration name and the task:
  schema schemaJar
}
委托给
来自 artifactsArtifactHandler

buildscript { }

配置此项目的构建脚本类路径。

给定闭包将针对此项目的 ScriptHandler 执行。ScriptHandler 作为闭包的委托传递给闭包。

委托给
来自 buildscriptScriptHandler

configurations { }

配置此项目的依赖配置。

此方法针对此项目的 ConfigurationContainer 执行给定的闭包。ConfigurationContainer 作为闭包的委托传递给闭包。

示例:参见 ConfigurationContainer 的文档

dependencies { }

配置此项目的依赖项。

此方法针对此项目的 DependencyHandler 执行给定的闭包。DependencyHandler 作为闭包的委托传递给闭包。

示例:参见 DependencyHandler 的文档

委托给
来自 dependenciesDependencyHandler

repositories { }

配置此项目的仓库。

此方法针对此项目的 RepositoryHandler 执行给定的闭包。RepositoryHandler 作为闭包的委托传递给闭包。

委托给
来自 repositoriesRepositoryHandler

subprojects { }

配置此项目的子项目。

此方法针对此项目的每个子项目执行给定的闭包。目标 Project 作为闭包的委托传递给闭包。

委托给
subprojects 中的每个 Project

application { }

配置 application 插件添加的 JavaApplication

委托给
来自 applicationJavaApplication

checkstyle { }

配置 checkstyle 插件添加的 CheckstyleExtension

委托给
来自 checkstyleCheckstyleExtension

codenarc { }

配置 codenarc 插件添加的 CodeNarcExtension

委托给
来自 codenarcCodeNarcExtension

distributions { }

配置由 distribution 插件添加的 DistributionContainer

eclipse { }

配置 eclipse 插件添加的 EclipseModel

委托给
来自 eclipseEclipseModel

idea { }

配置 idea 插件添加的 IdeaModel

委托给
来自 ideaIdeaModel

jacoco { }

配置 jacoco 插件添加的 JacocoPluginExtension

委托给
来自 jacocoJacocoPluginExtension

base { }

配置由 java 插件添加的 BasePluginExtension

委托给
来自 baseBasePluginExtension

java { }

配置由 java 插件添加的 JavaPluginExtension

委托给
来自 javaJavaPluginExtension

reporting { }

配置由 java 插件添加的 ReportingExtension

委托给
来自 reportingReportingExtension

pmd { }

配置 pmd 插件添加的 PmdExtension

委托给
来自 pmdPmdExtension

publishing { }

配置由 publishing 插件添加的 PublishingExtension

委托给
来自 publishingPublishingExtension

signing { }

配置由 signing 插件添加的 SigningExtension

委托给
来自 signingSigningExtension

visualStudio { }

配置由 visual-studio 插件添加的 VisualStudioRootExtension

xcode { }

配置由 xcode 插件添加的 XcodeRootExtension

委托给
来自 xcodeXcodeRootExtension