2013-07-25 12 views
14

のは、私は私のプロジェクトで使用していたClojureのライブラリにハッキングされたとしましょう:ローカルにチェックアウトされたソースからライブラリコードをロードすることはできますか?

/ユーザー/ SCDF /コード/ MyProjectと/
/ユーザー/ SCDF /コード/その他-民族・プロジェクト/ clojure-ライブラリークローン化-から-githubの

現在

、私はその後、(私は私を変更しましたし、そのproject.clj新しい-SNAPSHOTバージョンを指すように、ローカルリポジトリに私の新しいバージョンをプッシュするlein installを実行clojure-library-cloned-from-githubに変更を加えることライブラリが毎回更新されるようにしてから再起動/実行します)lein depsmyproject

leiningenには、mavenとjarsを使用する代わりに../../clojure-library-cloned-from-githubのライブラリのソースコードが表示されるため、実行時にコードを変更すると表示されます。

答えて

18

Leiningens checkout dependenciesの機能を確認してください。

基本的には、現在のプロジェクトの「checkouts」というサブディレクトリにあるライブラリディレクトリへのシンボリックリンクを作成し、Leiningenプロファイルに追加します。今度はあなたのプログラムがLeiningen(REPL、run)から起動されると、そのプロジェクトもロードされます。

Windowsの場合、シンボリックリンクを作成する代わりに、NTFSをディレクトリへのシンボリックリンクに相当するもの( 'junction point')にする必要があります。

プロジェクトがLeiningen(Eclipse/CounterClockWiseなど)を使用して実際に開始されていない場合は、これが機能しないように注意してください。 CounterClockWiseから実行する場合は、Eclipseプロジェクトとして必要なライブラリを追加してから、自分のプロジェクトのEclipseプロジェクトプロパティを編集する必要があります。Java Build Path> Projectsで、ライブラリプロジェクトを追加します。

Eclipse REPLから始めると、ライブラリはJavaクラスパスに組み込まれます。ただし、Leiningenを使用してプロジェクトを実行する場合は、チェックアウト機能も使用する必要があります。

もちろん、プログラムのスタンドアロンビルドを作成する場合は、チェックアウトの方法はもう機能しません。通常の依存関係としてライブラリをインクルードするか、uberjarにビルドされたバージョンを含める必要があります。

+0

サイド質問、それはgitを混同しないでしょうか? 'nix上では、ソフトリンクについて知っていると思いますが、それに従わないように伝えることはできますが、基本的に透過的なNTFS上の接続ポイントではありませんか?私はあなたが '.gitignore'に' checkouts/'を追加すると思います。 – SCdF

+0

はい、チェックアウトはローカル開発専用の機能です。そのため、実際にプロジェクトの依存関係にライブラリを追加する必要があるのです。チェックアウトのバージョンが優先されます。あなたのバージョン管理でそれを無視することは良い考えです。 – NielsK

関連する問題