ディレクトリ構造:
Project1/ABC/file1.txt
上記のABCフォルダをXYZに移動/名前変更したい(ABCをそこに残さない)。
Gradleを使用してこれを行うにはどうすればよいですか。 Gradleのように見える:右利きの人の場合、左手で右耳をかゆみ、頭の上からかゆみます。
私は次の例を使用しました:しかし、それは何もしません:
task renABCToXYZ(type: Copy) << {
copy {
from "Project1"
into "Project1"
include 'ABC'
rename ('ABC', 'XYZ')
}
}
タスク宣言がCopy
タスクタイプとproject.copy
メソッドを誤って組み合わせているため、コピーするものがないため実行されないタスクになります。さらに、Copy
はディレクトリの名前を変更するための正しい選択ではありません。名前を変更するためのGradle APIはありませんが、Groovyコードの一部(JavaのFile
APIを利用)で実行できます。 Project1
がプロジェクトディレクトリであると仮定します。
task renABCToXYZ {
doLast {
file("ABC").renameTo(file("XYZ"))
}
}
全体像を見ると、doLast
を生成するタスクに名前変更ロジック(つまり、ABC
タスクアクション)を追加する方が良いでしょう。
上記の解決策では、ファイルとフォルダーの名前を変更でき、ファイルを移動できますが、renameToを使用してフォルダーを別の場所に移動することはできません。この場合は、ant.moveを使用する必要があります。
ant.move(file: sourceDir, tofile: targetDir)
備考:問題はフォルダの名前を変更することです。したがって、上記の答えは正しいです(ただし、質問は少しあいまいです)。しかし、多分私の答えは、この質問に困惑してフォルダを移動したい他のユーザーにとって役立つでしょう。
次のコードは、あるディレクトリから別のディレクトリにファイルを移動し、ファイルの名前を変更します
task wb764Jar( type: Jar ) {
doFirst{
copy {
from 'deployment/alpha/workbench_alpha7_64.jnlp'
into 'build/libs/jar_merge/developed/alpha64/JNLP-INF/'
rename('workbench_alpha7_64.jnlp', 'APPLICATION.JNLP')
}
}
baseName = 'WorkbenchMaster7_64'
from files(wbLibsDir + '/jar_merge/developed/alpha64/')
from zipTree("$wbJar.archivePath")
}