読者です 読者をやめる 読者になる 読者になる

本当は怖い情報科学

情報系大学院生の趣味&実益ブログ。

Leiningen2 で単独の jar ファイルを利用する

clojure

Leiningen2では、依存する外部ライブラリは全てMavenリポジトリを経由してインストールするようになっている。単独で配布されている jar ファイルを使いたかったので、方法を調べた。

意外と簡単。結論としてはhttp://www.pgrs.net/2011/10/30/using-local-jars-with-leiningen/ に書かれている。ちょっと手直しをしてすぐに動いた。

まず、プロジェクトを作成する

$ lein new test
Generating a project called test based on the 'default' template.
To see other templates (app, lein plugin, etc), try `lein help new`.
$ cd test/
$ ls
README.md    doc/         project.clj  src/         test/

OK, 次に該当するjarファイルをどっかにダウンロードしておく。ここでは、Evernote API の jar ファイルを使おう。EvernoteAPIJava SDKhttps://github.com/evernote/evernote-sdk-javaで公開されていて、jarファイルを直接ダウンロードできる

$ wget -O /tmp/evernote-api-1.22.jar --no-check-certificate https://github.com/evernote/evernote-sdk-java/raw/master/lib/evernote-api-1.22.jar

次に、ローカルのmavenリポジトリを作成して、先ほどのevernote jar を突っ込む

$ mkdir maven_repository
$ mvn install:install-file -Dfile=/tmp/evernote-api-1.22.jar -DartifactId=evernote -Dversion=1.22 -DgroupId=evernote -Dpackaging=jar -DlocalRepositoryPath=maven_repository 
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-install-plugin:2.3.1:install-file (default-cli) @ standalone-pom ---
[INFO] Installing /tmp/evernote-api-1.22.jar to /Users/keisukefukuda/tmp/test/maven_repository/evernote/evernote/1.22/evernote-1.22.jar
[INFO] Installing /var/folders/r9/zsz_cfxj2wqf61lgzy8mnn1r0000gn/T/mvninstall1625570643138599358.pom to /Users/keisukefukuda/tmp/test/maven_repository/evernote/evernote/1.22/evernote-1.22.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.804s
[INFO] Finished at: Mon Sep 10 12:42:46 JST 2012
[INFO] Final Memory: 3M/81M
[INFO] ------------------------------------------------------------------------

これでOK. さらに、project.clrを編集してインストールしたjarファイルを参照する。

(defproject test "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"}
  :repositories [["local" (str (.toURI (java.io.File. "maven_repository")))]]
  :dependencies [[org.clojure/clojure "1.4.0"]
                 [evernote "1.22"]
                ])

さて、以上で動くはずだ。実験してみる

$ lein repl
nREPL server started on port 57044
REPL-y 0.1.0-beta10
Clojure 1.4.0
    Exit: Control+D or (exit) or (quit)
Commands: (user/help)
    Docs: (doc function-name-here)
          (find-doc "part-of-name-here")
  Source: (source function-name-here)
          (user/sourcery function-name-here)
 Javadoc: (javadoc java-object-or-class-here)
Examples from clojuredocs.org: [clojuredocs or cdoc]
          (user/clojuredocs name-here)
          (user/clojuredocs "ns-here" "name-here")
user=> (import com.evernote.edam.userstore.Constants)
com.evernote.edam.userstore.Constants
user=> com.evernote.edam.userstore.Constants/EDAM_VERSION_MAJOR
1
user=> com.evernote.edam.userstore.Constants/EDAM_VERSION_MINOR
22

動いた!

【広告】