複数のプロジェクトで動作するようにLeiningenを設定するにはどうすればよいですか?
質問
私は、表面上は他の人に依存する可能性のある複数の個別のライインニンプロジェクトを持っています。
例:
~/projects/mywebapp (my own project)
~/projects/noir (a clone of the github repo)
~/projects/clojureql (a clone of the github repo)
それらをすべて同じJVMに同時にコンパイルしてもらいたいです。 Git Repos Bleeding Edge(新しいコミットを引く/自分でコミットする)を実行したいと思いますが、Lein JarやLein Depsを実行する必要はなく、プロジェクトを変更した場合はVMを再起動する必要はありません。
これがユースケースです:
EMACS内からLein Swankを実行した後、REPLに接続してMyWebApp(CCKを使用)からファイルをコンパイルします。これには、Noirからのファイルが必要です。プロジェクトディレクトリにファイルのバージョンが見つかります。その後、そのファイルを開き、編集してコンパイルします(CCKを使用)。
Git Pullを行うとき、私は自動コンパイルを求めていないことに注意してください。 JVMを再起動したり、長いJARコンパイルプロセスを実行したりする必要はありません。
これはライインニンで可能ですか?これをセットアップするにはどうすればよいですか?
解決
からこの質問はありますか レインFAQ ヘルプ?
Q: :2つのプロジェクトを並行してハッキングしたいのですが、それらを切り替えるのは面倒です。
a: :チェックアウト依存関係と呼ばれる機能を使用します。プロジェクトルートにチェックアウトというディレクトリを作成し、他のプロジェクトのルーツをシンリンクする場合、Leiningenはそれらを並行してハッキングすることができます。つまり、インストール/スイッチプロジェクト/DEPS/再起動-REPLサイクル全体を通過することなく、メインプロジェクトで依存関係の変更が表示されることを意味します。これは、プロジェクトを以下にリストするための代替ではないことに注意してください。それは、より厳しい変化サイクルのためにそれを単に補完します。
他のヒント
すでにSwankを使用している場合、Lein Checkout依存関係は必要ありません。プロジェクト(Noir/WhatingのJarredバージョンをロードする)をCC CKするだけで、NoirとCC CKのローカルバージョンを参照してください。 SwankはすべてのコードをREPLに喜んで送信します。JVMは、それが別の場所から来たことを知る必要はありません!
noir.coreをコンパイルした場合(たとえば)noir.internalに依存している場合、ClojureはNoir.internalのジャーレッドバージョンをローカルバージョンのNoirをコンパイルしている場合でも、noir.internalに依存する場合にのみ、これをお勧めします。芯。それでも、それは一般的に便利なトリックです。