テストで一時ファイルを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では、valueDSLと呼ばれる、より統一された新しい構文が導入されました。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およびその他のコレクションベースのキーは(可変)コレクションを模倣するようになったため、演算子を使用してコレクションに値を追加できます+=。複数の値がある場合は、またはの代わりに使用++=してください。ListSeq
.valuebaseDirectory書くときの評価を強制することはありませんが、毎回cleanFiles計算されるので、サブプロジェクトごとに異なります。
検査とコマンドの構文を更新
構文にもわずかな違いがありinspect clean-filesます。
hyphen-named-commands0.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)