web-dev-qa-db-ja.com

Gradle-ABCからXYZにフォルダーを移動する

ディレクトリ構造:

Project1/ABC/file1.txt

上記のABCフォルダをXYZに移動/名前変更したい(ABCをそこに残さない)。

Gradleを使用してこれを行うにはどうすればよいですか。 Gradleのように見える:右利きの人の場合、左手で右耳をかゆみ、頭の上からかゆみます。

私は次の例を使用しました:しかし、それは何もしません:

task renABCToXYZ(type: Copy) << {
   copy {
      from "Project1"
      into "Project1"
      include 'ABC'
      rename ('ABC', 'XYZ')
   }
}
15
Arun Sangal

タスク宣言がCopyタスクタイプとproject.copyメソッドを誤って組み合わせているため、コピーするものがないため実行されないタスクになります。さらに、Copyはディレクトリの名前を変更するための正しい選択ではありません。名前を変更するためのGradle APIはありませんが、Groovyコードの一部(JavaのFile AP​​Iを利用)で実行できます。 Project1がプロジェクトディレクトリであると仮定します。

task renABCToXYZ {
    doLast {
        file("ABC").renameTo(file("XYZ"))
    }
}

全体像を見ると、doLastを生成するタスクに名前変更ロジック(つまり、ABCタスクアクション)を追加する方が良いでしょう。

21

上記の解決策では、ファイルとフォルダーの名前を変更でき、ファイルを移動できますが、renameToを使用してフォルダーを別の場所に移動することはできません。この場合は、ant.moveを使用する必要があります。

 ant.move(file: sourceDir, tofile: targetDir)

備考:問題はフォルダの名前を変更することです。したがって、上記の答えは正しいです(ただし、質問は少しあいまいです)。しかし、多分私の答えは、この質問に困惑してフォルダを移動したい他のユーザーにとって役立つでしょう。

9
Matthias M

次のコードは、あるディレクトリから別のディレクトリにファイルを移動し、ファイルの名前を変更します

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")
    }
3
A Jakhar