我使用sbt
在以下方式:我在sbt中運行~ test:compile
,然後在IDE中工作,偶爾觀看項目是否仍在編譯,因爲IDE的演示編譯器往往是越野車。當我在git pull
的某些代碼中,project/
文件可能有變化,所以我想重新加載。有沒有辦法,怎麼看源文件和項目文件,所以當項目文件發生變化時,我實際上得到了更新?觀察項目文件也
Q
觀察項目文件也
5
A
回答
3
實際上,你不能使用~ <task>
並將它現在重建項目本身,因爲~ <task>
需要讀取生成定義自己決定:
- 什麼源文件看
- 如何運行任務。
你正在做的是改變項目/改變的配置。這需要sbt的完整reload
或reboot
才能引入新配置。
因此,從0.13開始,這是不可能的。你可以有它,所以它會重建你的源代碼project/
改變時,但沒有重建構建定義,沒有太大的幫助。
您可以創建一個新的sbt提示符或任務,在運行時可以檢查項目中的源文件是否已更新,併發出警告/錯誤,以便知道重新引導。這可能是目前最好的選擇。
6
正如jsuereth所解釋的,這不是SBT在1例中可以處理的任務。所需要的是重啓SBT以中止觀看過程並重新加載它自己的配置。
下面的Scala腳本完全是這樣做的,它使用Java NIO WatchService和Scala Process監視路徑並重新啓動進程。該代碼應該是相當簡單的瞭解:在您的SBT目錄
#!/usr/bin/env scala
import java.nio.file._
import scala.collection.JavaConversions._
import scala.sys.process._
val file = Paths.get(args(0))
val cmd = args(1)
val watcher = FileSystems.getDefault.newWatchService
file.register(
watcher,
StandardWatchEventKinds.ENTRY_CREATE,
StandardWatchEventKinds.ENTRY_MODIFY,
StandardWatchEventKinds.ENTRY_DELETE
)
def exec = cmd run true
@scala.annotation.tailrec
def watch(proc: Process): Unit = {
val key = watcher.take
val events = key.pollEvents
val newProc =
if (!events.isEmpty) {
proc.destroy()
exec
} else proc
if (key.reset) watch(newProc)
else println("aborted")
}
watch(exec)
用法是:
watchr.scala project/ "sbt ~ test:compile"
如果有不清楚的地方請不要猶豫,問,當然也可以使用任何腳本語言實現這種行爲。
相關問題
- 1. 觀察QStringList的新項目
- 2. 如何實現文件觀察器來觀察多個目錄
- 3. 使可觀察陣列的所有項目可觀察
- 4. Aptana 3 - 掛接文件觀察器到新項目
- 5. 觀察PropertyChanged集合中的項目
- 6. django-notification:有多少觀察項目
- 7. 當前項目的可觀察集合?
- 8. 觀察@each並獲取更新項目
- 9. Dart可觀察列表刪除項目
- 10. sproutcore - 觀察數組項目的屬性
- 11. Autosys文件觀察器
- 12. HDFS文件觀察器
- 13. 安卓文件觀察器
- 14. 文件觀察器錯誤
- 15. 當觀察者希望觀察不同的項目時,實現觀察者模式
- 16. 節點觀察EPERM何時刪除了觀察文件夾
- 17. KVO觀察與NSNotificationCenter觀察
- 18. 收聽列表中項目內的可觀察事件
- 19. jQuery - 使用mouseleave事件觀察多個項目
- 20. WPF threadsave觀察到的集合項目變更事件
- 21. JavaScript文檔觀察
- 22. 如何應用觀察者模式如果觀察者也是主體
- 23. Rails用戶模型has_many活動(觀察者),但也應該被觀察到
- 24. 目錄觀察延遲
- 25. 文件觀察家事件觸發
- 26. 事件:從觀察獲得事件觀察者
- 27. 一個可觀察事件的多個可觀察事件
- 28. 觀察員可以觀察多個可觀察物嗎?
- 29. 觀察
- 30. linux - 觀察新文件的目錄,然後運行腳本
是否可以觀察項目文件夾進行更改並讓SBT正常關機? – Schleichardt