簡體   English   中英

更改gradle中的文件擴展名

[英]Change file extensions in gradle

這似乎很簡單,但是我找不到提供解決方案的單一來源。

我有一個像這樣的項目:

src
 -main
  -resources
   -bpmns
    -nnn.bpmn

我希望gradle將所有以bpmn結尾的文件重命名為bpmn20.xml ,而保留所有已經具有bpmn20.xml擴展名的文件。

這是我的方法:

task renameBPMN(type: Copy) {
    outputs.upToDateWhen { false } //to pevent gradle from not executing this task
    from('src/main/resources/bpmn/')
    into('src/main/resources/bpmn/')
    rename ('/^.*\\.(bpmn)$/', '$1.bpmn20.xml')
}

根據一些在線正則表達式測試人員的說法,正則表達式應該匹配nnn.bpmn ,gradle卻什么也不做。

有任何想法嗎?

這是他需要的,或者實際上是該腳本可以完成的。

在這里它將更改文件:filenamebpmn或filename.bpmn分別為filenamebpmn20.xml或filename.bpmn20.xml。 它將忽略所有其他文件,無論是filenamebpmn.xml還是filename.bpmn.xml或任何其他文件。

$ cat build.gradle

task renameBPMN() << {

    fileTree("bpmnfolder").matching { include "*bpmn" }.each { fileName ->
      println "Will be changed to new name --- " + fileName
      file("${fileName}").renameTo("${fileName}20.xml")
    }
}

$ ls -l bpmnfolder

total 3
-rw-r--r-- 1 c400093 Domain Users 3 Aug  6 15:14 1bpmn
-rw-r--r-- 1 c400093 Domain Users 3 Aug  6 14:50 2bpmn
-rw-r--r-- 1 c400093 Domain Users 6 Aug  6 14:50 3bpmn.xml

$ /cygdrive/c/gradle-2.0/bin/gradle重命名BPMN

:renameBPMN
Will be changed to new name --- C:\cygwin\home\c400093\giga\goga\giga\bpmnfolder\1bpmn
Will be changed to new name --- C:\cygwin\home\c400093\giga\goga\giga\bpmnfolder\2bpmn

BUILD SUCCESSFUL

Total time: 3.153 secs

$ ls -l bpmnfolder

total 3
-rw-r--r-- 1 c400093 Domain Users 3 Aug  6 15:14 1bpmn20.xml
-rw-r--r-- 1 c400093 Domain Users 3 Aug  6 14:50 2bpmn20.xml
-rw-r--r-- 1 c400093 Domain Users 6 Aug  6 14:50 3bpmn.xml

$

如果要包含以bpmn結尾的文件名作為擴展名,即filename.bpmn或filenamebpbpmn,請使用以下代碼。

$ ls -l bpmnfolder

total 5
-rw-r--r-- 1 c400093 Domain Users 3 Aug  6 15:39 1bpmn
-rw-r--r-- 1 c400093 Domain Users 3 Aug  6 15:39 2bpmn
-rw-r--r-- 1 c400093 Domain Users 6 Aug  6 15:39 3bpmn.xml
-rw-r--r-- 1 c400093 Domain Users 8 Aug  6 15:39 4.bpmn
-rw-r--r-- 1 c400093 Domain Users 3 Aug  6 15:39 5.bpmn.xml

$ cat build.gradle

task renameBPMN() << {

    fileTree("bpmnfolder").matching { include "*bpmn" include "*.bpmn" }.each { fileName ->
      println "Will be changed to new name --- " + fileName
      file("${fileName}").renameTo("${fileName}20.xml")
    }
}

$ /cygdrive/c/gradle-2.0/bin/gradle重命名BPMN

:renameBPMN
Will be changed to new name --- C:\cygwin\home\c400093\giga\goga\giga\bpmnfolder\1bpmn
Will be changed to new name --- C:\cygwin\home\c400093\giga\goga\giga\bpmnfolder\2bpmn
Will be changed to new name --- C:\cygwin\home\c400093\giga\goga\giga\bpmnfolder\4.bpmn

BUILD SUCCESSFUL

Total time: 4.271 secs

$ ls -l bpmnfolder

total 5
-rw-r--r-- 1 c400093 Domain Users 3 Aug  6 15:39 1bpmn20.xml
-rw-r--r-- 1 c400093 Domain Users 3 Aug  6 15:39 2bpmn20.xml
-rw-r--r-- 1 c400093 Domain Users 6 Aug  6 15:39 3bpmn.xml
-rw-r--r-- 1 c400093 Domain Users 8 Aug  6 15:39 4.bpmn20.xml
-rw-r--r-- 1 c400093 Domain Users 3 Aug  6 15:39 5.bpmn.xml

$

修改任務以:

task rename(type: Copy) {
    outputs.upToDateWhen { false } //to pevent gradle from not executing this task
    from('src/main/resources/bpmn/')
    into('src/main/resources/bpmn/')
    exclude { resource -> !resource.file.name.endsWith('.bpmn')}
    rename '(.*).bpmn', '$1.bpmn20.xml'
}

根據gradle文檔, AbstractCopyTask::rename()的正則表達式不需要定界符:

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

嘗試更換:

rename ('/^.*\\.(bpmn)$/', '$1.bpmn20.xml')

帶有:

rename ('^.*\\.(bpmn)$', '$1.bpmn20.xml')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM