2017-04-11 9 views
0

私のプロジェクトのgradleビルドでdiffパッケージ生成タスクをgitコマンドライン出力から実装しています。現在私はgit diff --name-onlyから変更されたファイルのリストを私に与える方法があります。私がしたいのは、各ファイルのパスに一致するディレクトリ構造を新しいディレクトリに作成することです。たとえば、文字列repo/dir/file.javaを入力すると、出力ディレクトリにはまだ作成されていないディレクトリが作成され、その中にはfile.javaprev/repo/dirの前にfile.javaという名前のディレクトリhead/repo/dirが作成されます。gradle/groovyのパスからディレクトリ構造を作成します

私の現在の計画は、文字列repo/dir/file.javaをスラッシュで分割し、分割結果の最後の要素までディレクトリを作成し、そこでファイルを書き込むことです。私はgradleで思い付くことができなかったものは素晴らしく清潔です。私はそれのような文字列からディレクトリを作成するためのより良い方法があるのだろうかと思っています。

+0

Gradleを実行するGroovyは、Java仮想マシン(JVM)で実行されます。そのため、['File'](https://docs.oracle.com/javase/7/docs/api/java/io/File.html)クラスを含め、JDK全体を使用できます。あなたは[この質問](http://stackoverflow.com/questions/3090761/how-to-create-a-new-file-together-with-missing-parent-directories)を見ることができます。なぜなら、説明されたJava方法を用いることができる。 Groovyは、 'File'クラスを含むいくつかのJDKクラスに対して、[機能強化](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() 
関連する問題