8

私はclojureが初めてです。Clojure repl で再生したい jar ファイルがありますが、leiningen 2 では再生できませんでした。

jarファイルをsrc/myjar.jarとsrc/org/mydomain/myjar.jarに配置しようとしました

lein repl を実行すると、leiningen がアーティファクトを見つけられないというエラーと、理解できない再現性に関するページへの参照が表示されます。

これが私のproject.cljです(myjarの本名)

(defproject cljliveordead "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.3.0"]
                 [org.allen.temporalintervalrelationships/time "0.2" :extension "jar"]])
4

3 に答える 3

4

lein-localrepo プラグインを使用してローカル jar を使用できます。この行を project.clj に追加します

:plugins [[lein-localrepo "0.4.0"]]

次に、jar をローカル リポジトリにインストールします。

lein localrepo install <path-to-jar> org.allen.temporalintervalrelationships/time 0.2

を実行してファイルがインストールされていることを確認し、lein localrepo listを使用して lein がプロジェクトの依存関係を解決できることを確認できますlein deps。すべてが順調であれば、 を使用して瓶で遊ぶことができますlein repl

Leiningen は、反復可能なビルドを目標にしているため、ローカル jar を好みません。これがサード パーティのクローズド ソース jar を使用する実際のプロジェクトである場合は、それをローカルの Nexus リポジトリにインストールし、そのリポジトリへの参照をプロジェクトに追加することをお勧めします。

ただし、これはすべて、達成しようとしていることに対して少し重いようです。REPL で jar をいじるだけの場合は、次のような単純なプロジェクトを作成します。

(defproject clojure-time "0.1.0-SNAPSHOT"
  :dependencies [[org.clojure/clojure "1.4.0"]
                 [com.cemerick/pomegranate "0.0.13"]])

ザクロライブラリを使用して、手動でjarをクラスパスに追加します

(require '[cemerick.pomegranate :as p])
(p/add-classpath "jsr-310-ri-0.6.3.jar")
(javax.time.Instant/now)

そして遊んでください。

于 2012-07-12T13:54:03.740 に答える
1

私は多くのアプリケーションでclojure-csvを使用しているので、clojure-csvを参照するモジュールがそれを使用してビルドできることを確認してください。これが私が行ったことです。

0)走ったlein new bene-csv

1)これをproject.cljに追加しました(lein new bene-csvと入力した後)。適切な行はですが[clojure-csv/clojure-csv "1.3.2"]、良い例として、project.clj全体を表示するのは理にかなっています。

(defproject bene-csv "1.0.4-SNAPSHOT"
  :description "A csv parsing library"
  :dependencies [[org.clojure/clojure "1.3.0"]
                 [clojure-csv/clojure-csv "1.3.2"]
                 [util "1.0.2-SNAPSHOT"]]


  :aot [bene-csv.core]
  :omit-source true)

2)私のbene-csv / src / bene_csv/core.cljがclojure-csvを参照していることを確認しました。

(ns bene-csv.core
  ^{:author "Charles M. Norton",
    :doc "bene-csv is a small library to parse a .csv file.
        Created on March 8, 2012"}
  (:require [clojure.string :as cstr])
  (:require [util.core :as utl])
  (:use clojure-csv.core))

最後に、これらのコマンドを実行して、メインプロジェクトがbene-csvの関数と定義を参照できるようにしました。

lein deps
lein install
于 2012-06-26T14:42:50.830 に答える
1

ハックな方法はそれを入れることで/proiject/path/lib/あり、「適切な」方法は次のことです。

  • プロジェクトに依存関係を追加します
  • lein depsを実行すると、jarをローカルのMavenリポジトリにインストールするためのコマンドが出力されます。
  • コマンドleiningenを実行すると、jarへのパスが表示されます
  • 再びleindepsを実行します
于 2012-06-26T00:14:02.637 に答える