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 | 用於查詢和配置目錄存取權限的屬性。如果此屬性沒有設定值,表示將保留現有的權限。這些權限是否實際應用取決於複製動作的實作。詳細資訊請參閱 |
duplicatesStrategy | 嘗試將多個檔案複製到相同目標時使用的策略。 |
excludes | 排除模式的集合。 |
filePermissions | 用於查詢和配置檔案存取權限的屬性。如果此屬性沒有設定值,表示將保留現有的權限。這些權限是否實際應用取決於複製動作的實作。詳細資訊請參閱 |
includeEmptyDirs | 指示是否將空目標目錄包含在複製中。 |
includes | 包含模式的集合。 |
preserve | 定義要在目標目錄中保留哪些檔案的篩選器。 |
source | 此任務的來源檔案。 |
方法 | 描述 |
eachFile(closure) | 新增一個動作,以應用於每個即將複製到其目標位置的檔案。給定的 closure 會以 |
eachFile(action) | 新增一個動作,以應用於每個即將複製到其目標位置的檔案。此動作可以變更檔案的目標路徑、篩選檔案的內容,或完全從結果中排除該檔案。動作會按照新增的順序執行,並從父規範繼承。 |
exclude(excludeSpec) | 新增一個排除規格。可以多次呼叫此方法以附加新的規格。給定的 closure 會傳遞一個 |
exclude(excludes) | 新增一個 ANT 樣式的排除模式。可以多次呼叫此方法以附加新的模式,並且可以在單次呼叫中指定多個模式。如果未提供排除模式,則不會排除任何檔案。如果提供了排除模式,則檔案必須不符合任何排除模式才能被處理。 |
exclude(excludes) | 新增一個 ANT 樣式的排除模式。可以多次呼叫此方法以附加新的模式,並且可以在單次呼叫中指定多個模式。如果未提供排除模式,則不會排除任何檔案。如果提供了排除模式,則檔案必須不符合任何排除模式才能被處理。 |
exclude(excludeSpec) | 新增一個排除規格。可以多次呼叫此方法以附加新的規格。如果未提供排除模式,則不會排除任何檔案。如果提供了排除模式,則檔案必須不符合任何排除模式才能被處理。 |
expand(properties) | 在複製每個檔案時擴展屬性參考。更具體地說,每個檔案都使用 Groovy 的 |
expand(properties, action) | 在複製每個檔案時擴展屬性參考。更具體地說,每個檔案都使用 Groovy 的 |
filesMatching(patterns, action) | 為路徑符合任何指定 Ant 樣式模式的每個檔案配置 |
filesMatching(pattern, action) | 為路徑符合指定 Ant 樣式模式的每個檔案配置 |
filesNotMatching(patterns, action) | 為路徑不符合任何指定 Ant 樣式模式的每個檔案配置 |
filesNotMatching(pattern, action) | 為路徑不符合指定 Ant 樣式模式的每個檔案配置 |
filter(closure) | 根據提供的 closure 新增內容篩選器。將使用每行 (去除行尾符號) 呼叫 Closure,並應傳回一個字串以替換該行,或傳回 |
filter(filterType) | 新增要在複製期間使用的內容篩選器。多次呼叫 filter 會將額外的篩選器新增至篩選器鏈。每個篩選器應實作 |
filter(properties, filterType) | 新增要在複製期間使用的內容篩選器。多次呼叫 filter 會將額外的篩選器新增至篩選器鏈。每個篩選器應實作 |
filter(transformer) | 根據提供的轉換器新增內容篩選器。將使用每行 (去除行尾符號) 呼叫 Closure,並應傳回一個字串以替換該行,或傳回 |
from(sourcePath, c) | 指定複製的來源檔案或目錄,並建立子 |
from(sourcePath, configureAction) | 指定複製的來源檔案或目錄,並建立子 |
from(sourcePaths) | 指定複製的來源檔案或目錄。給定的路徑會依照 |
include(includeSpec) | 新增一個包含規格。可以多次呼叫此方法以附加新的規格。給定的 closure 會傳遞一個 |
include(includes) | 新增一個 ANT 樣式的包含模式。可以多次呼叫此方法以附加新的模式,並且可以在單次呼叫中指定多個模式。如果未提供包含模式,則此容器中的所有檔案都將包含在內。如果提供了包含模式,則檔案必須符合至少一個包含模式才能被處理。 |
include(includes) | 新增一個 ANT 樣式的包含模式。可以多次呼叫此方法以附加新的模式,並且可以在單次呼叫中指定多個模式。如果未提供包含模式,則此容器中的所有檔案都將包含在內。如果提供了包含模式,則檔案必須符合至少一個包含模式才能被處理。 |
include(includeSpec) | 新增一個包含規格。可以多次呼叫此方法以附加新的規格。如果未提供包含模式,則此容器中的所有檔案都將包含在內。如果提供了包含模式,則檔案必須符合至少一個包含模式或規格才能包含在內。 |
into(destDir) | 指定複製的目標目錄。目標會依照 |
into(destPath, configureClosure) | 使用給定的目標路徑建立和配置子 |
into(destPath, copySpec) | 使用給定的目標路徑建立和配置子 |
preserve(action) | 配置篩選器,以定義要在目標目錄中保留哪些檔案。 |
rename(closure) | 重新命名來源檔案。將使用單一參數 (檔案名稱) 呼叫 closure。此 closure 應傳回一個字串物件,其中包含新的目標名稱。此 closure 可以傳回 null,在這種情況下,將使用原始名稱。 |
rename(sourceRegEx, replaceWith) | 根據正則表達式重新命名檔案。使用 java.util.regex 類型的正則表達式。請注意,替換字串應使用 '$1' 語法來參考來源正則表達式中的捕獲群組。不符合來源正則表達式的檔案將以原始名稱複製。 |
rename(sourceRegEx, replaceWith) | 根據正則表達式重新命名檔案。請參閱 |
rename(renamer) | 重新命名來源檔案。將使用單一參數 (檔案名稱) 呼叫函數。此函數應傳回新的目標名稱。此函數可以傳回 null,在這種情況下,將使用原始名稱。 |
with(sourceSpecs) | 將給定的規範新增為此規範的子規範。 |
Property
<ConfigurableFilePermissions
>
dirPermissions
Property
<ConfigurableFilePermissions
>用於查詢和配置目錄存取權限的屬性。如果此屬性沒有設定值,表示將保留現有的權限。這些權限是否實際應用取決於複製動作的實作。詳細資訊請參閱 ConfigurableFilePermissions
。
- 預設
null
DuplicatesStrategy
duplicatesStrategy
嘗試將多個檔案複製到相同目標時使用的策略。
此值可以使用列舉值的不區分大小寫字串來設定 (例如,'exclude'
代表 DuplicatesStrategy.EXCLUDE
)。
此策略可以透過使用 CopySpec.eachFile(org.gradle.api.Action)
或 CopySpec.filesMatching(java.lang.String, org.gradle.api.Action)
來覆寫個別檔案。
- 預設
DuplicatesStrategy.INHERIT
Property
<ConfigurableFilePermissions
>
filePermissions
Property
<ConfigurableFilePermissions
>用於查詢和配置檔案存取權限的屬性。如果此屬性沒有設定值,表示將保留現有的權限。這些權限是否實際應用取決於複製動作的實作。詳細資訊請參閱 ConfigurableFilePermissions
。
- 預設
null
AbstractCopyTask
eachFile
(Closure
closure)
新增一個動作,以應用於每個即將複製到其目標位置的檔案。給定的 closure 會以 FileCopyDetails
作為參數呼叫。動作會按照新增的順序執行,並從父規範繼承。
AbstractCopyTask
eachFile
(Action
<? super FileCopyDetails
>
action)
Action
<? super FileCopyDetails
>新增一個動作,以應用於每個即將複製到其目標位置的檔案。此動作可以變更檔案的目標路徑、篩選檔案的內容,或完全從結果中排除該檔案。動作會按照新增的順序執行,並從父規範繼承。
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)
Iterable
<String
>新增一個 ANT 樣式的排除模式。可以多次呼叫此方法以附加新的模式,並且可以在單次呼叫中指定多個模式。如果未提供排除模式,則不會排除任何檔案。如果提供了排除模式,則檔案必須不符合任何排除模式才能被處理。
AbstractCopyTask
exclude
(String
...
excludes)
String
...新增一個 ANT 樣式的排除模式。可以多次呼叫此方法以附加新的模式,並且可以在單次呼叫中指定多個模式。如果未提供排除模式,則不會排除任何檔案。如果提供了排除模式,則檔案必須不符合任何排除模式才能被處理。
AbstractCopyTask
exclude
(Spec
<FileTreeElement
>
excludeSpec)
Spec
<FileTreeElement
>新增一個排除規格。可以多次呼叫此方法以附加新的規格。如果未提供排除模式,則不會排除任何檔案。如果提供了排除模式,則檔案必須不符合任何排除模式才能被處理。
AbstractCopyTask
expand
(Map
<String
, ?>
properties)
Map
<String
, ?>在複製每個檔案時擴展屬性參考。更具體地說,每個檔案都使用 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)
Map
<String
, ?>Action
<? super ExpandDetails
>在複製每個檔案時擴展屬性參考。更具體地說,每個檔案都使用 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)
Iterable
<String
>Action
<? super FileCopyDetails
>為路徑符合任何指定 Ant 樣式模式的每個檔案配置 FileCopyDetails
。這相當於使用 eachFile() 並根據檔案的路徑選擇性地應用配置。
AbstractCopyTask
filesMatching
(String
pattern, Action
<? super FileCopyDetails
>
action)
Action
<? super FileCopyDetails
>為路徑符合指定 Ant 樣式模式的每個檔案配置 FileCopyDetails
。這相當於使用 eachFile() 並根據檔案的路徑選擇性地應用配置。
AbstractCopyTask
filesNotMatching
(Iterable
<String
>
模式, Action
<? super FileCopyDetails
>
行為)
Iterable
<String
>Action
<? super FileCopyDetails
>為路徑不符合任何指定 Ant 樣式模式的每個檔案配置 FileCopyDetails
。這相當於使用 eachFile() 並根據檔案的路徑選擇性地應用配置。
AbstractCopyTask
filesNotMatching
(String
模式, Action
<? super FileCopyDetails
>
行為)
Action
<? super FileCopyDetails
>為路徑不符合指定 Ant 樣式模式的每個檔案配置 FileCopyDetails
。這相當於使用 eachFile() 並根據檔案的路徑選擇性地應用配置。
AbstractCopyTask
filter
(Closure
閉包)
根據提供的 closure 新增內容篩選器。將使用每行 (去除行尾符號) 呼叫 Closure,並應傳回一個字串以替換該行,或傳回 null
以移除該行。如果移除每一行,結果將會是空檔案,而不是不存在的檔案。
AbstractCopyTask
filter
(Class
<? extends FilterReader
>
篩選器類型)
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
>
篩選器類型)
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'])
AbstractCopyTask
filter
(Transformer
<String
, String
>
轉換器)
Transformer
<String
, String
>根據提供的轉換器新增內容篩選器。將使用每行 (去除行尾符號) 呼叫 Closure,並應傳回一個字串以替換該行,或傳回 null
以移除該行。如果移除每一行,結果將會是空檔案,而不是不存在的檔案。
AbstractCopyTask
from
(Object
來源路徑, Closure
c)
指定複製的來源檔案或目錄,並建立子 CopySourceSpec
。給定的來源路徑會依照 Project.files(java.lang.Object[])
進行評估。
AbstractCopyTask
from
(Object
來源路徑, Action
<? super CopySpec
>
設定行為)
Action
<? super CopySpec
>指定複製的來源檔案或目錄,並建立子 CopySpec
。給定的來源路徑會依照 Project.files(java.lang.Object[])
進行評估。
AbstractCopyTask
from
(Object
...
來源路徑)
Object
...指定複製的來源檔案或目錄。給定的路徑會依照 Project.files(java.lang.Object[])
進行評估。
AbstractCopyTask
include
(Closure
包含規格)
新增一個包含規格。可以多次呼叫此方法以附加新的規格。給定的 closure 會傳遞一個 FileTreeElement
作為其參數。如果未提供包含模式,則此容器中的所有檔案都將包含在內。如果提供了包含模式,則檔案必須符合至少一個包含模式或規格才能包含在內。
AbstractCopyTask
include
(Iterable
<String
>
包含)
Iterable
<String
>新增一個 ANT 樣式的包含模式。可以多次呼叫此方法以附加新的模式,並且可以在單次呼叫中指定多個模式。如果未提供包含模式,則此容器中的所有檔案都將包含在內。如果提供了包含模式,則檔案必須符合至少一個包含模式才能被處理。
AbstractCopyTask
include
(String
...
包含)
String
...新增一個 ANT 樣式的包含模式。可以多次呼叫此方法以附加新的模式,並且可以在單次呼叫中指定多個模式。如果未提供包含模式,則此容器中的所有檔案都將包含在內。如果提供了包含模式,則檔案必須符合至少一個包含模式才能被處理。
AbstractCopyTask
include
(Spec
<FileTreeElement
>
包含規格)
Spec
<FileTreeElement
>新增一個包含規格。可以多次呼叫此方法以附加新的規格。如果未提供包含模式,則此容器中的所有檔案都將包含在內。如果提供了包含模式,則檔案必須符合至少一個包含模式或規格才能包含在內。
AbstractCopyTask
into
(Object
目的目錄)
指定複製的目標目錄。目標會依照 Project.file(java.lang.Object)
進行評估。
AbstractCopyTask
into
(Object
目的路徑, Closure
設定閉包)
使用給定的目標路徑建立和配置子 CopySpec
。目標會依照 Project.file(java.lang.Object)
進行評估。
使用給定的目標路徑建立和配置子 CopySpec
。目標會依照 Project.file(java.lang.Object)
進行評估。
Sync
preserve
(Action
<? super PatternFilterable
>
行為)
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
>
重新命名器)
Transformer
<String
, String
>重新命名來源檔案。將使用單一參數 (檔案名稱) 呼叫函數。此函數應傳回新的目標名稱。此函數可以傳回 null,在這種情況下,將使用原始名稱。