peringatan penghentian sbt ‹‹= diganti dengan := menghasilkan kelas utama tidak ditemukan

Saat menggunakan sbt 0.13.13. Saya dapat mengamati bahwa ketika menggunakan := tidak ada kelas utama yang ditemukan (tetapi tidak ada peringatan penghentian yang ditampilkan), dan untuk <<= saya mendapat peringatan, tetapi kelas utama ditemukan. Apa yang salah disini?

run in Compile := Defaults.runTask(fullClasspath in Compile, mainClass in(Compile, run), runner in(Compile, run))
run in Compile <<= Defaults.runTask(fullClasspath in Compile, mainClass in(Compile, run), runner in(Compile, run))

person Georg Heiler    schedule 02.04.2017    source sumber
comment
:= dan <<= memiliki tipe yang berbeda. Anda harus mengubah bodinya tetapi saya tidak yakin perubahan apa yang diperlukan.   -  person Alexey Romanov    schedule 03.04.2017


Jawaban (1)


run adalah InputTask[Unit] dan jenis runTask adalah Def.Initialize[InputTask[Unit]] dan sisi kanan := harus berupa Unit.

Apa yang Anda lakukan dikompilasi karena nilai apa pun dapat dibuang demi nilai kembalian tipe Unit, tetapi nilai tersebut tidak memiliki semantik yang sama seperti sebelumnya.

Untuk tugas masukan, Anda perlu "mengevaluasi" tugas tersebut:

run in Compile := Defaults.runTask(
  fullClasspath in Compile,
  mainClass.in(Compile, run),
  runner.in(Compile, run)).evaluated
person Justin Kaeser    schedule 03.04.2017
comment
nilai apa pun cocok dengan tipe Unit, agar lebih bertele-tele, lebih dari itu nilai apa pun dapat dibuang dan nilai unit () dapat dimasukkan. - person Dale Wijnand; 12.05.2017