Pertanyaan Jalankan tugas khusus secara otomatis sebelum / setelah tugas standar


Saya sering ingin melakukan kustomisasi sebelum salah satu tugas standar dijalankan. Saya menyadari saya dapat membuat tugas baru yang menjalankan tugas yang ada sesuai urutan yang saya inginkan, tetapi saya merasa rumit dan kemungkinan pengembang merindukan bahwa ia seharusnya menjalankan kompilasi saya, bukan kompilasi adalah besar dan mengarah ke kesalahan sulit untuk diperbaiki .

Jadi saya ingin mendefinisikan tugas khusus (misalnya mempersiapkan aplikasi) dan menyuntikkannya ke dalam pohon dependensi dari tugas yang ada (misalnya paket-bin) sehingga setiap kali seseorang memanggil paket-bin tugas-tugas adat saya dijalankan tepat sebelum itu.

Saya mencoba melakukan ini

  def mySettings = {
    inConfig(Compile)(Seq(prepareAppTask <<= packageBin in Compile map { (pkg: File) =>
      // fiddle with the /target folder before package-bin makes it into a jar
    })) ++
    Seq(name := "my project", version := "1.0")
  }

  lazy val prepareAppTask = TaskKey[Unit]("prepare-app")

tetapi tidak dijalankan secara otomatis oleh paket-bin tepat sebelum mengemas hasil kompilasi ke dalam toples. Jadi bagaimana cara mengubah kode di atas untuk dijalankan pada waktu yang tepat?

Lebih umum di mana saya menemukan info tentang hooking ke tugas-tugas lain seperti kompilasi dan apakah ada cara umum untuk memastikan bahwa tugas Anda sendiri dijalankan sebelum dan sesudah tugas standar dipanggil ?.


32
2017-10-19 11:58


asal


Jawaban:


Memperluas tugas yang ada didokumentasikan dokumentasi SBT untuk Tugas (lihat bagiannya Memodifikasi Tugas yang Ada).

Sesuatu seperti ini:

compile in Compile <<= (compile in Compile) map { _ => 
  // what you want to happen after compile goes here 
}

Sebenarnya, ada cara lain - tentukan tugas Anda untuk bergantung pada kompilasi

prepareAppTask := (whatever you want to do) dependsOn compile

dan kemudian memodifikasi packageBin untuk bergantung pada itu:

packageBin <<= packageBin dependsOn prepareAppTask

(semua yang di atas tidak teruji, tetapi dorongan umum harus bekerja, saya harap).


33
2017-10-19 13:22