同步

API 文件Sync

將目標目錄的內容與一些來源目錄和檔案同步。

此任務類似於 Copy 任務,不同之處在於目標目錄僅包含複製的檔案。除非指定了 Sync.preserve(org.gradle.api.Action),否則目標目錄中存在的所有檔案將在複製檔案之前被刪除。

範例

// Sync can be used like a Copy task
// See the Copy documentation for more examples
task syncDependencies(type: Sync) {
    from 'my/shared/dependencyDir'
    into 'build/deps/compile'
}

// You can preserve output that already exists in the
// destination directory. Files matching the preserve
// filter will not be deleted.
task sync(type: Sync) {
    from 'source'
    into 'dest'
    preserve {
        include 'extraDir/**'
        include 'dir1/**'
        exclude 'dir1/extra.txt'
    }
}

屬性

屬性描述
caseSensitive

指定是否應使用區分大小寫的模式匹配。

destinationDir

要將檔案複製到的目錄。

dirPermissions

用於查詢和配置目錄存取權限的屬性。如果此屬性沒有設定值,表示將保留現有的權限。這些權限是否實際應用取決於複製動作的實作。詳細資訊請參閱 ConfigurableFilePermissions

duplicatesStrategy

嘗試將多個檔案複製到相同目標時使用的策略。

excludes

排除模式的集合。

filePermissions

用於查詢和配置檔案存取權限的屬性。如果此屬性沒有設定值,表示將保留現有的權限。這些權限是否實際應用取決於複製動作的實作。詳細資訊請參閱 ConfigurableFilePermissions

includeEmptyDirs

指示是否將空目標目錄包含在複製中。

includes

包含模式的集合。

preserve

定義要在目標目錄中保留哪些檔案的篩選器。

source

此任務的來源檔案。

方法

方法描述
eachFile(closure)

新增一個動作,以應用於每個即將複製到其目標位置的檔案。給定的 closure 會以 FileCopyDetails 作為參數呼叫。動作會按照新增的順序執行,並從父規範繼承。

eachFile(action)

新增一個動作,以應用於每個即將複製到其目標位置的檔案。此動作可以變更檔案的目標路徑、篩選檔案的內容,或完全從結果中排除該檔案。動作會按照新增的順序執行,並從父規範繼承。

exclude(excludeSpec)

新增一個排除規格。可以多次呼叫此方法以附加新的規格。給定的 closure 會傳遞一個 FileTreeElement 作為其參數。此 closure 應傳回 true 或 false。範例

exclude(excludes)

新增一個 ANT 樣式的排除模式。可以多次呼叫此方法以附加新的模式,並且可以在單次呼叫中指定多個模式。如果未提供排除模式,則不會排除任何檔案。如果提供了排除模式,則檔案必須不符合任何排除模式才能被處理。

exclude(excludes)

新增一個 ANT 樣式的排除模式。可以多次呼叫此方法以附加新的模式,並且可以在單次呼叫中指定多個模式。如果未提供排除模式,則不會排除任何檔案。如果提供了排除模式,則檔案必須不符合任何排除模式才能被處理。

exclude(excludeSpec)

新增一個排除規格。可以多次呼叫此方法以附加新的規格。如果未提供排除模式,則不會排除任何檔案。如果提供了排除模式,則檔案必須不符合任何排除模式才能被處理。

expand(properties)

在複製每個檔案時擴展屬性參考。更具體地說,每個檔案都使用 Groovy 的 SimpleTemplateEngine 進行轉換。這表示您可以在檔案中使用簡單的屬性參考,例如 $property${property}。您也可以在檔案中包含任意 Groovy 程式碼,例如 ${version ?: 'unknown'}${classpath*.name.join(' ')}

expand(properties, action)

在複製每個檔案時擴展屬性參考。更具體地說,每個檔案都使用 Groovy 的 SimpleTemplateEngine 進行轉換。這表示您可以在檔案中使用簡單的屬性參考,例如 $property${property}。您也可以在檔案中包含任意 Groovy 程式碼,例如 ${version ?: 'unknown'}${classpath*.name.join(' ')}。可以使用提供的動作來配置模板引擎。

filesMatching(patterns, action)

為路徑符合任何指定 Ant 樣式模式的每個檔案配置 FileCopyDetails。這相當於使用 eachFile() 並根據檔案的路徑選擇性地應用配置。

filesMatching(pattern, action)

為路徑符合指定 Ant 樣式模式的每個檔案配置 FileCopyDetails。這相當於使用 eachFile() 並根據檔案的路徑選擇性地應用配置。

filesNotMatching(patterns, action)

為路徑不符合任何指定 Ant 樣式模式的每個檔案配置 FileCopyDetails。這相當於使用 eachFile() 並根據檔案的路徑選擇性地應用配置。

filesNotMatching(pattern, action)

為路徑不符合指定 Ant 樣式模式的每個檔案配置 FileCopyDetails。這相當於使用 eachFile() 並根據檔案的路徑選擇性地應用配置。

filter(closure)

根據提供的 closure 新增內容篩選器。將使用每行 (去除行尾符號) 呼叫 Closure,並應傳回一個字串以替換該行,或傳回 null 以移除該行。如果移除每一行,結果將會是空檔案,而不是不存在的檔案。

filter(filterType)

新增要在複製期間使用的內容篩選器。多次呼叫 filter 會將額外的篩選器新增至篩選器鏈。每個篩選器應實作 java.io.FilterReader。包含 org.apache.tools.ant.filters.* 以存取所有標準 Ant 篩選器。

filter(properties, filterType)

新增要在複製期間使用的內容篩選器。多次呼叫 filter 會將額外的篩選器新增至篩選器鏈。每個篩選器應實作 java.io.FilterReader。包含 org.apache.tools.ant.filters.* 以存取所有標準 Ant 篩選器。

filter(transformer)

根據提供的轉換器新增內容篩選器。將使用每行 (去除行尾符號) 呼叫 Closure,並應傳回一個字串以替換該行,或傳回 null 以移除該行。如果移除每一行,結果將會是空檔案,而不是不存在的檔案。

from(sourcePath, c)

指定複製的來源檔案或目錄,並建立子 CopySourceSpec。給定的來源路徑會依照 Project.files(java.lang.Object[]) 進行評估。

from(sourcePath, configureAction)

指定複製的來源檔案或目錄,並建立子 CopySpec。給定的來源路徑會依照 Project.files(java.lang.Object[]) 進行評估。

from(sourcePaths)

指定複製的來源檔案或目錄。給定的路徑會依照 Project.files(java.lang.Object[]) 進行評估。

include(includeSpec)

新增一個包含規格。可以多次呼叫此方法以附加新的規格。給定的 closure 會傳遞一個 FileTreeElement 作為其參數。如果未提供包含模式,則此容器中的所有檔案都將包含在內。如果提供了包含模式,則檔案必須符合至少一個包含模式或規格才能包含在內。

include(includes)

新增一個 ANT 樣式的包含模式。可以多次呼叫此方法以附加新的模式,並且可以在單次呼叫中指定多個模式。如果未提供包含模式,則此容器中的所有檔案都將包含在內。如果提供了包含模式,則檔案必須符合至少一個包含模式才能被處理。

include(includes)

新增一個 ANT 樣式的包含模式。可以多次呼叫此方法以附加新的模式,並且可以在單次呼叫中指定多個模式。如果未提供包含模式,則此容器中的所有檔案都將包含在內。如果提供了包含模式,則檔案必須符合至少一個包含模式才能被處理。

include(includeSpec)

新增一個包含規格。可以多次呼叫此方法以附加新的規格。如果未提供包含模式,則此容器中的所有檔案都將包含在內。如果提供了包含模式,則檔案必須符合至少一個包含模式或規格才能包含在內。

into(destDir)

指定複製的目標目錄。目標會依照 Project.file(java.lang.Object) 進行評估。

into(destPath, configureClosure)

使用給定的目標路徑建立和配置子 CopySpec。目標會依照 Project.file(java.lang.Object) 進行評估。

into(destPath, copySpec)

使用給定的目標路徑建立和配置子 CopySpec。目標會依照 Project.file(java.lang.Object) 進行評估。

preserve(action)

配置篩選器,以定義要在目標目錄中保留哪些檔案。

rename(closure)

重新命名來源檔案。將使用單一參數 (檔案名稱) 呼叫 closure。此 closure 應傳回一個字串物件,其中包含新的目標名稱。此 closure 可以傳回 null,在這種情況下,將使用原始名稱。

rename(sourceRegEx, replaceWith)

根據正則表達式重新命名檔案。使用 java.util.regex 類型的正則表達式。請注意,替換字串應使用 '$1' 語法來參考來源正則表達式中的捕獲群組。不符合來源正則表達式的檔案將以原始名稱複製。

rename(sourceRegEx, replaceWith)

根據正則表達式重新命名檔案。請參閱 CopyProcessingSpec.rename(java.lang.String, java.lang.String)

rename(renamer)

重新命名來源檔案。將使用單一參數 (檔案名稱) 呼叫函數。此函數應傳回新的目標名稱。此函數可以傳回 null,在這種情況下,將使用原始名稱。

with(sourceSpecs)

將給定的規範新增為此規範的子規範。

腳本區塊

沒有腳本區塊

屬性詳細資訊

boolean caseSensitive

指定是否應使用區分大小寫的模式匹配。

預設
true

File destinationDir

要將檔案複製到的目錄。

預設
null

用於查詢和配置目錄存取權限的屬性。如果此屬性沒有設定值,表示將保留現有的權限。這些權限是否實際應用取決於複製動作的實作。詳細資訊請參閱 ConfigurableFilePermissions

預設
null

DuplicatesStrategy duplicatesStrategy

嘗試將多個檔案複製到相同目標時使用的策略。

此值可以使用列舉值的不區分大小寫字串來設定 (例如,'exclude' 代表 DuplicatesStrategy.EXCLUDE)。

此策略可以透過使用 CopySpec.eachFile(org.gradle.api.Action)CopySpec.filesMatching(java.lang.String, org.gradle.api.Action) 來覆寫個別檔案。

預設
DuplicatesStrategy.INHERIT

Set<String> excludes

排除模式的集合。

預設
[]

用於查詢和配置檔案存取權限的屬性。如果此屬性沒有設定值,表示將保留現有的權限。這些權限是否實際應用取決於複製動作的實作。詳細資訊請參閱 ConfigurableFilePermissions

預設
null

boolean includeEmptyDirs

指示是否將空目標目錄包含在複製中。

預設
true

Set<String> includes

包含模式的集合。

預設
[]

PatternFilterable preserve (唯讀)

定義要在目標目錄中保留哪些檔案的篩選器。

預設
empty

FileCollection source (唯讀)

此任務的來源檔案。

預設
[]

方法詳細資訊

AbstractCopyTask eachFile(Closure closure)

新增一個動作,以應用於每個即將複製到其目標位置的檔案。給定的 closure 會以 FileCopyDetails 作為參數呼叫。動作會按照新增的順序執行,並從父規範繼承。

AbstractCopyTask eachFile(Action<? super FileCopyDetails> action)

新增一個動作,以應用於每個即將複製到其目標位置的檔案。此動作可以變更檔案的目標路徑、篩選檔案的內容,或完全從結果中排除該檔案。動作會按照新增的順序執行,並從父規範繼承。

AbstractCopyTask exclude(Closure excludeSpec)

新增一個排除規格。可以多次呼叫此方法以附加新的規格。給定的 closure 會傳遞一個 FileTreeElement 作為其參數。此 closure 應傳回 true 或 false。範例

copySpec {
  from 'source'
  into 'destination'
  //an example of excluding files from certain configuration:
  exclude { it.file in configurations.someConf.files }
}

如果未提供排除模式,則不會排除任何檔案。如果提供了排除模式,則檔案必須不符合任何排除模式才能被處理。

AbstractCopyTask exclude(Iterable<String> excludes)

新增一個 ANT 樣式的排除模式。可以多次呼叫此方法以附加新的模式,並且可以在單次呼叫中指定多個模式。如果未提供排除模式,則不會排除任何檔案。如果提供了排除模式,則檔案必須不符合任何排除模式才能被處理。

AbstractCopyTask exclude(String... excludes)

新增一個 ANT 樣式的排除模式。可以多次呼叫此方法以附加新的模式,並且可以在單次呼叫中指定多個模式。如果未提供排除模式,則不會排除任何檔案。如果提供了排除模式,則檔案必須不符合任何排除模式才能被處理。

AbstractCopyTask exclude(Spec<FileTreeElement> excludeSpec)

新增一個排除規格。可以多次呼叫此方法以附加新的規格。如果未提供排除模式,則不會排除任何檔案。如果提供了排除模式,則檔案必須不符合任何排除模式才能被處理。

AbstractCopyTask expand(Map<String, ?> properties)

在複製每個檔案時擴展屬性參考。更具體地說,每個檔案都使用 Groovy 的 SimpleTemplateEngine 進行轉換。這表示您可以在檔案中使用簡單的屬性參考,例如 $property${property}。您也可以在檔案中包含任意 Groovy 程式碼,例如 ${version ?: 'unknown'}${classpath*.name.join(' ')}

請注意,所有跳脫序列 (\n\t\\ 等) 都會轉換為它們代表的符號,因此,例如,\n 會變成換行符號。如果這是不希望發生的情況,則應使用 ContentFilterable.expand(java.util.Map, org.gradle.api.Action) 來停用此行為。

AbstractCopyTask expand(Map<String, ?> properties, Action<? super ExpandDetails> action)

在複製每個檔案時擴展屬性參考。更具體地說,每個檔案都使用 Groovy 的 SimpleTemplateEngine 進行轉換。這表示您可以在檔案中使用簡單的屬性參考,例如 $property${property}。您也可以在檔案中包含任意 Groovy 程式碼,例如 ${version ?: 'unknown'}${classpath*.name.join(' ')}。可以使用提供的動作來配置模板引擎。

請注意,預設情況下,所有跳脫序列 (\n\t\\ 等) 都會轉換為它們代表的符號,因此,例如,\n 會變成換行符號。此行為由 ExpandDetails.getEscapeBackslash() 屬性控制。應將其設定為 true 以停用跳脫序列轉換

 expand(one: '1', two: 2) {
     escapeBackslash = true
 }

AbstractCopyTask filesMatching(Iterable<String> patterns, Action<? super FileCopyDetails> action)

為路徑符合任何指定 Ant 樣式模式的每個檔案配置 FileCopyDetails。這相當於使用 eachFile() 並根據檔案的路徑選擇性地應用配置。

AbstractCopyTask filesMatching(String pattern, Action<? super FileCopyDetails> action)

為路徑符合指定 Ant 樣式模式的每個檔案配置 FileCopyDetails。這相當於使用 eachFile() 並根據檔案的路徑選擇性地應用配置。

AbstractCopyTask filesNotMatching(Iterable<String> 模式, Action<? super FileCopyDetails> 行為)

為路徑不符合任何指定 Ant 樣式模式的每個檔案配置 FileCopyDetails。這相當於使用 eachFile() 並根據檔案的路徑選擇性地應用配置。

AbstractCopyTask filesNotMatching(String 模式, Action<? super FileCopyDetails> 行為)

為路徑不符合指定 Ant 樣式模式的每個檔案配置 FileCopyDetails。這相當於使用 eachFile() 並根據檔案的路徑選擇性地應用配置。

AbstractCopyTask filter(Closure 閉包)

根據提供的 closure 新增內容篩選器。將使用每行 (去除行尾符號) 呼叫 Closure,並應傳回一個字串以替換該行,或傳回 null 以移除該行。如果移除每一行,結果將會是空檔案,而不是不存在的檔案。

AbstractCopyTask filter(Class<? extends FilterReader> 篩選器類型)

新增要在複製期間使用的內容篩選器。多次呼叫 filter 會將額外的篩選器新增至篩選器鏈。每個篩選器應實作 java.io.FilterReader。包含 org.apache.tools.ant.filters.* 以存取所有標準 Ant 篩選器。

範例

   filter(StripJavaComments)
   filter(com.mycompany.project.CustomFilter)

AbstractCopyTask filter(Map<String, ?> 屬性, Class<? extends FilterReader> 篩選器類型)

新增要在複製期間使用的內容篩選器。多次呼叫 filter 會將額外的篩選器新增至篩選器鏈。每個篩選器應實作 java.io.FilterReader。包含 org.apache.tools.ant.filters.* 以存取所有標準 Ant 篩選器。

篩選器屬性可以使用 Groovy map 語法指定。

範例

   filter(HeadFilter, lines:25, skip:2)
   filter(ReplaceTokens, tokens:[copyright:'2009', version:'2.3.1'])

根據提供的轉換器新增內容篩選器。將使用每行 (去除行尾符號) 呼叫 Closure,並應傳回一個字串以替換該行,或傳回 null 以移除該行。如果移除每一行,結果將會是空檔案,而不是不存在的檔案。

AbstractCopyTask from(Object 來源路徑, Closure c)

指定複製的來源檔案或目錄,並建立子 CopySourceSpec。給定的來源路徑會依照 Project.files(java.lang.Object[]) 進行評估。

AbstractCopyTask from(Object 來源路徑, Action<? super CopySpec> 設定行為)

指定複製的來源檔案或目錄,並建立子 CopySpec。給定的來源路徑會依照 Project.files(java.lang.Object[]) 進行評估。

AbstractCopyTask from(Object... 來源路徑)

指定複製的來源檔案或目錄。給定的路徑會依照 Project.files(java.lang.Object[]) 進行評估。

AbstractCopyTask include(Closure 包含規格)

新增一個包含規格。可以多次呼叫此方法以附加新的規格。給定的 closure 會傳遞一個 FileTreeElement 作為其參數。如果未提供包含模式,則此容器中的所有檔案都將包含在內。如果提供了包含模式,則檔案必須符合至少一個包含模式或規格才能包含在內。

新增一個 ANT 樣式的包含模式。可以多次呼叫此方法以附加新的模式,並且可以在單次呼叫中指定多個模式。如果未提供包含模式,則此容器中的所有檔案都將包含在內。如果提供了包含模式,則檔案必須符合至少一個包含模式才能被處理。

AbstractCopyTask include(String... 包含)

新增一個 ANT 樣式的包含模式。可以多次呼叫此方法以附加新的模式,並且可以在單次呼叫中指定多個模式。如果未提供包含模式,則此容器中的所有檔案都將包含在內。如果提供了包含模式,則檔案必須符合至少一個包含模式才能被處理。

AbstractCopyTask include(Spec<FileTreeElement> 包含規格)

新增一個包含規格。可以多次呼叫此方法以附加新的規格。如果未提供包含模式,則此容器中的所有檔案都將包含在內。如果提供了包含模式,則檔案必須符合至少一個包含模式或規格才能包含在內。

AbstractCopyTask into(Object 目的目錄)

指定複製的目標目錄。目標會依照 Project.file(java.lang.Object) 進行評估。

AbstractCopyTask into(Object 目的路徑, Closure 設定閉包)

使用給定的目標路徑建立和配置子 CopySpec。目標會依照 Project.file(java.lang.Object) 進行評估。

CopySpec into(Object 目的路徑, Action<? super CopySpec> 複製規格)

使用給定的目標路徑建立和配置子 CopySpec。目標會依照 Project.file(java.lang.Object) 進行評估。

Sync preserve(Action<? super PatternFilterable> 行為)

配置篩選器,以定義要在目標目錄中保留哪些檔案。

AbstractCopyTask rename(Closure 閉包)

重新命名來源檔案。將使用單一參數 (檔案名稱) 呼叫 closure。此 closure 應傳回一個字串物件,其中包含新的目標名稱。此 closure 可以傳回 null,在這種情況下,將使用原始名稱。

AbstractCopyTask rename(String 來源正則表達式, String 替換為)

根據正則表達式重新命名檔案。使用 java.util.regex 類型的正則表達式。請注意,替換字串應使用 '$1' 語法來參考來源正則表達式中的捕獲群組。不符合來源正則表達式的檔案將以原始名稱複製。

範例

rename '(.*)_OEM_BLUE_(.*)', '$1$2'

會將檔案 'style_OEM_BLUE_.css' 對應到 'style.css'

AbstractCopyTask rename(Pattern 來源正則表達式, String 替換為)

根據正則表達式重新命名檔案。請參閱 CopyProcessingSpec.rename(java.lang.String, java.lang.String)

AbstractCopyTask rename(Transformer<String, String> 重新命名器)

重新命名來源檔案。將使用單一參數 (檔案名稱) 呼叫函數。此函數應傳回新的目標名稱。此函數可以傳回 null,在這種情況下,將使用原始名稱。

CopySpec with(CopySpec... 來源規格)

將給定的規範新增為此規範的子規範。

def contentSpec = copySpec {
  from("content") {
    include "**/*.txt"
  }
}

task copy(type: Copy) {
  into "$buildDir/copy"
  with contentSpec
}