2017-04-11 199 views
0

我正在從git命令行輸出項目的gradle構建中實現diff包生成任務。目前我有一個方法,它會給我一個從git diff --name-only更改文件列表。我想要做的是在與每個文件的路徑匹配的新目錄中創建一個目錄結構。例如:輸入字符串repo/dir/file.java將在輸出目錄中創建(如果尚未創建),並在其中創建目錄head/repo/dir與當前的file.javaprev/repo/dir以及以前的file.java從gradle/groovy中的路徑創建目錄結構

我目前的計劃是在正斜槓上分割字符串repo/dir/file.java,並創建目錄直到分割結果的最後一個元素,然後在那裏寫入文件。但是我沒有能夠在gradle中提出的是很好或乾淨。我想知道是否有更好的方法來創建像這樣的字符串的目錄。

+0

運行Gradle的Groovy在Java虛擬機(JVM)中執行。因此,您可以使用整個JDK,包括['File'](https://docs.oracle.com/javase/7/docs/api/java/io/File.html)類。你可以看看[這個問題](http://stackoverflow.com/questions/3090761/how-to-create-a-new-file-together-with-missing-parent-directories),因爲解釋的Java方法可以使用。 Groovy還爲某些JDK類(包括File類)提供了[增強功能](http://docs.groovy-lang.org/latest/html/groovy-jdk/overview-summary.html)。 –

回答

0

我目前的計劃是比手動分割你的字符串

而是分割字符串repo/dir/file.java上斜槓,並創建目錄,直到分割結果的最後一個元素,你可以嘗試使用File.mkdirs()

File newDirectoryStructureParent = new File('some/path/to/parent/dir') 

def s = 'repo/dir/file.java' 
def newContainer = new File(s, newDirectoryStructureParent).getParent() 
newContainer.mkdirs()