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 中的範例