テストで一時ファイルをtempというディレクトリに作成するSBTビルドがあります。クリーンタスクを呼び出すときに、このフォルダーを削除するようにSBTに指示するにはどうすればよいですか?
4 に答える
temp
ディレクトリを含むプロジェクトで次の設定を使用します。
cleanFiles <+= baseDirectory { base => base / "temp" }
これにより、ファイルのリストに「temp」ディレクトリが追加され、実行時に再帰的に削除されclean
ます。
<
「他のタスク/設定の観点から構成する」という意味+
は、現在のファイルのリストに追加するという意味baseDirectory
であり、プロジェクトのベースディレクトリを提供する設定です。
コマンドを使用してどのようclean
に構成されているかを確認できます。inspect
詳細については、[設定の検査]ページを参照してください。編集されたsbtセッションは、この場合の使用法を示しています。
> inspect clean
Task: Unit
Description:
Deletes files produced by the build, such as generated sources, compiled classes, and task caches.
Dependencies:
clean-files
clean-keep-files
> inspect clean-files
Setting: scala.collection.Seq[java.io.File] = List(<project>/lib_managed, <project>/target, <project>/temp)
Description:
The files to recursively delete during a clean.
Dependencies:
managed-directory
target
base-directory
これは、それがタスクまたは設定であるかどうか、タイプ、説明、および入力として使用されるタスク/設定を示していることがわかります。
マーク・ハラの答えは今では時代遅れです。
これは、sbt 0.13以降で動作するバージョンであり、sbt1.0以降で動作する2つのバージョンのうちの唯一のものです。
キー追加構文を更新しました。
sbt 0.13より前は、<+=
値を追加するための構文がありapply
、キーを使用することができました。
0.13では、value
DSLと呼ばれる、より統一された新しい構文が導入されました。1.0以降、古い構文は削除されました。
// From the old, apply-based version...
cleanFiles <+= baseDirectory { base => base / "temp" }
// ...we change to .value and collection-like syntax
cleanFiles += baseDirectory.value / "temp"
cleanFiles
およびその他のコレクションベースのキーは(可変)コレクションを模倣するようになったため、演算子を使用してコレクションに値を追加できます+=
。複数の値がある場合は、またはの代わりに使用++=
してください。List
Seq
.value
baseDirectory
書くときの評価を強制することはありませんが、毎回cleanFiles
計算されるので、サブプロジェクトごとに異なります。
検査とコマンドの構文を更新
構文にもわずかな違いがありinspect clean-files
ます。
hyphen-named-commands
0.13で非推奨になり、1.0で削除されました。それらはに置き換えられたlowerCamelCaseCommands
ので、コンソールでも。と同じbuild.sbt
です。inspect
キーの値が表示されなくなりました(そのバージョン情報が見つかりませんでした)。代わりに、を使用する必要がありますshow
。sbt:root-_t> show cleanFiles [info] * C:\Users\Adowrath\_T\target\scala-2.12 [info] * C:\Users\Adowrath\_T\target\streams [info] * C:\Users\Adowrath\_T\temp [success] Total time: 0 s, completed 06.02.2018, 10:28:00
1つの可能性は、agilesteelが指摘したように、テストが後でクリーンアップされることです。
もう1つの可能性は、テストタスクに依存するカスタムクリーンアップタスクを作成することです。既存のタスク(あなたの場合のテストなど)をカスタマイズする方法の詳細については、ここで私の答えを参照してください:既存のルールに依存関係を追加します。
以前に提案されたソリューションは現在非推奨です。ベローは私のために働くコードです。
cleanFiles += new java.io.File(path)