簡體   English   中英

在使用nrepl.el時如何更新Clojure依賴項?

[英]How do I update Clojure dependencies when working with nrepl.el?

據我了解,當我執行nrepl-jack-in ,REPL與project.clj中定義的所有依賴項一起被加載。 如果我然后更新project.clj以添加新的依賴項,我是否需要nrepl-jack-in服務器並重新運行nrepl-jack-in或者是否有辦法更新當前REPL中的依賴項?

更新:也許有一些希望,請參閱https://github.com/cemerick/pomegranate

先前:

簡短的回答是肯定的 - 您必須重新啟動JVM進程。

我知道沒有好的方法來更新實時repl中的依賴項。 Leiningen(由nrepl-jack-in調用)將管理依賴項並僅在重新啟動時設置類路徑。 嘗試做一些充滿活力和聰明的事情是非常脆弱的。

下面這個被刪除的文本事實上是正確的但是片刻的反思似乎是如此糟糕的建議我已經將其標記為......

如果您有本地依賴項(例如jar文件),則可以在repl中使用長時間 不推薦使用的函數 add-classpath 但是你將進入龍類肆虐的java類加載器沼澤。

在石榴存在之前,我編寫了自己的庫來動態加載依賴項。

https://github.com/bmillare/dj

在lein2發布之后以及如何在封面下使用pomegrante,我重寫了dj以便在下面使用它。 所以,即使你不使用'dj',它也可能是一個有用的參考,看看它在做什么。

重啟REPL似乎是最簡單的方法。 這可以通過以下方式完成:

M-x cider-restart

這也似乎完成了lein deps 因此,添加新依賴項的整個過程只需將require添加到project.clj ,然后調用cider-restart


另一種(非常方便)的方法是使用clj-refactor 添加工件Cc mapcljr-add-project-dependency )將提示您所需的版本, 自動將新的依賴項放入project.clj文件,然后重新加載會話

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM