SBTビルドを実行した結果として生成されるすべてのものを取り除く簡単な方法はありますか?いたるところにターゲットディレクトリが作成されることがわかりました。実行する
sbt clean clean-cache clean-lib clean-plugins
...すべてを取り除くわけではありません。
SBTビルドを実行した結果として生成されるすべてのものを取り除く簡単な方法はありますか?いたるところにターゲットディレクトリが作成されることがわかりました。実行する
sbt clean clean-cache clean-lib clean-plugins
...すべてを取り除くわけではありません。
回答:
SBT 0.13.5を搭載した私のシステム(Ubuntu Linux)とCoursera関数型プログラミングコースのいくつかのプロジェクトでは、すべてのキャッシュファイルと重複したScalaダウンロードのために、12プロジェクトでフォルダーがすべて合計2.1GBであることがわかりました。
動作し、ほとんどすべてをクリーンアップする現在のSBTコマンドは次のとおりです。
sbt clean clean-files
これにより、最上位の「target」フォルダーと「lib_managed」フォルダー(この場合は23MBから3.2MB)が削除されますが、プロジェクトの下にいくつかのターゲットフォルダーが残ります。
./project/project/project/target
./project/project/target
./project/target
これは、Linuxのfindコマンド(@ jack-oconnorによって投稿されたもの)が非常に役立つ場所です。
find . -name target -type d -exec rm -rf {} \;
これにより、私自身のプロジェクトの1つでわずか444KBに戻り、2.1GBは5.0MBになります。
Windowsでは、パス名にスターワイルドカードがないなど、便利なコマンドラインオプションはそれほど多くありませんが、次の方法でいつでも強制的に試すことができます。
rmdir /s /q target project/target project/project/target
自動的に見つけるために私ができる最善のことは、DIRコマンドです。
dir /ad /s /b | find "target"
-f
findコマンドを使用するときにフラグを設定する必要がありますか?不必要で潜在的に危険なようです。
find . -name target -type d -exec rm -r {} \;
sbt clean cleanFiles
あなたのために働く
明らかに、これはJenkinsなどの統合サーバーでの再現可能なビルドにとって非常に重要です。
次のようなコマンドライン引数をsbtに指定して、ivyキャッシュを含むすべてのファイルが統合サーバーワークスペース内に格納されていることを確認します。
-Dsbt.global.base=project/.sbtboot -Dsbt.boot.directory=project/.boot -Dsbt.ivy.home=project/.ivy
次に、Jenkinsの[ワークスペースをワイプ]ボタン、または他の統合サーバーの同等のボタンをクリックします。それは間違いなくそれを行う必要があります!
または、最新バージョンのsbtランチャースクリプトを使用している場合は、-no-share
代わりに追加するだけです。
Linuxなどでは、ソースコードに存在する可能性のあるfind -name
名前付きディレクトリが誤って削除されないため、これはよりも優れていtarget
ます。
find . -regextype posix-awk -regex \.(/project)*/target -exec rm -r {} +
シェル内でこのコマンドを実行している場合は、たとえばbashの正規表現を引用する必要があります。
find . -regextype posix-awk -regex '\.(/project)*/target' -exec rm -r {} +
BSD find(Mac OS Xなど)を使用すると、コマンドは次のようになります。
find -E . -regex \.(/project)*/target -exec rm -r {} +