10

テストで一時ファイルをtempというディレクトリに作成するSBTビルドがあります。クリーンタスクを呼び出すときに、このフォルダーを削除するようにSBTに指示するにはどうすればよいですか?

4

4 に答える 4

13

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

これは、それがタスクまたは設定であるかどうか、タイプ、説明、および入力として使用されるタスク/設定を示していることがわかります。

于 2012-05-07T23:38:00.217 に答える
11

マーク・ハラの答えは今では時代遅れです。

これは、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ます。

  1. hyphen-named-commands0.13で非推奨になり、1.0で削除されました。それらはに置き換えられたlowerCamelCaseCommandsので、コンソールでも。と同じbuild.sbtです。
  2. 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
    
于 2018-02-07T09:08:25.663 に答える
1

1つの可能性は、agilesteelが指摘したように、テストが後でクリーンアップされることです。

もう1つの可能性は、テストタスクに依存するカスタムクリーンアップタスクを作成することです。既存のタスク(あなたの場合のテストなど)をカスタマイズする方法の詳細については、ここで私の答えを参照してください:既存のルールに依存関係を追加します。

于 2012-05-07T08:41:34.853 に答える
1

以前に提案されたソリューションは現在非推奨です。ベローは私のために働くコードです。

cleanFiles += new java.io.File(path)
于 2017-12-18T11:53:37.663 に答える