SourceSetOutput

API 文档SourceSetOutput

所有输出目录(编译后的类、处理后的资源等)的集合 - 请注意,SourceSetOutput 扩展了 FileCollection

提供源集的输出信息。允许配置默认输出目录并指定额外的输出目录。

plugins {
    id 'java'
}

sourceSets {
  main {
    //if you truly want to override the defaults:
    output.resourcesDir = file('out/bin')
    // Compiled Java classes should use this directory
    java.destinationDirectory.set(file('out/bin'))
  }
}

处理生成的资源。

通常,我们建议将生成的资源放入与常规 resourcesDir 和 classesDirs 不同的文件夹中。通常,这使构建更容易理解和维护。此外,它还提供了一些额外的好处,因为其他 Gradle 插件可以利用在 SourceSet.output 中“注册”的输出目录。例如:Java 插件将在计算类路径和打包内容时使用这些目录;IDEA 和 Eclipse 插件会将这些文件夹放在相关的类路径上。

如何处理生成资源的示例

plugins {
  id 'java'
}

def generateResourcesTask = tasks.register("generate-resources", GenerateResourcesTask) {
  resourcesDir.set(layout.buildDirectory.dir("generated-resources/main"))
}

// Include all outputs of the `generate-resources` task as outputs of the main sourceSet.
sourceSets {
  main {
    output.dir(generateResourcesTask)
  }
}

abstract class GenerateResourcesTask extends DefaultTask {
  @OutputDirectory
  abstract DirectoryProperty getResourcesDir()

  @TaskAction
  def generateResources() {
    def generated = resourcesDir.file("myGeneratedResource.properties").get().asFile
    generated.text = "message=Stay happy!"
  }
}

SourceSetOutput.dir(java.lang.Object)SourceSetOutput.getDirs() 中查找更多信息

属性

属性描述
classesDirs

包含已编译类的目录。

resourcesDir

资源的输出目录

方法

方法描述
dir(dir)

注册一个额外的输出目录。对生成的资源很有用。

dir(options, dir)

注册一个额外的输出目录和 builtBy 信息。对生成的资源很有用。

getDirs()

返回使用 #dir 方法注册的所有目录。每个文件都解析为 Project.file(java.lang.Object)

脚本块

没有脚本块

属性详情

FileCollection classesDirs (只读)

包含已编译类的目录。

使用 java 插件时的默认值
每个 ${project.layout.buildDirectory}/classes/${sourceDirectorySet.name}/${sourceSet.name} 的文件集合

File resourcesDir

资源的输出目录

请参阅 SourceSetOutput 中的示例

使用 java 插件时的默认值
${project.layout.buildDirectory}/classes/${sourceSet.name}

方法详情

void dir(Object dir)

注册一个额外的输出目录。对生成的资源很有用。

请参阅 SourceSetOutput 中的示例

void dir(Map<String, Object> options, Object dir)

注册一个额外的输出目录和 builtBy 信息。对生成的资源很有用。

请参阅 SourceSetOutput 中的示例

FileCollection getDirs()

返回使用 #dir 方法注册的所有目录。每个文件都解析为 Project.file(java.lang.Object)

请参阅 SourceSetOutput 中的示例