leiningen - 如何为本地jar添加依赖项?

2022-08-31 09:05:45

我想使用leiningen来构建和开发我的clojure项目。有没有办法修改project.clj,告诉它从本地目录中挑选一些jar?

我有一些专有的jar无法上传到公共存储库。

另外,leiningen可以用来维护clojure项目的“lib”目录吗?如果我的一堆 clojure 项目共享相同的 jar,我不想为每个项目维护一个单独的副本。

谢谢


答案 1

只需在 project.clj 文件中使用 :resource-paths。我使用它,例如连接到Siebel服务器。刚刚在我的项目目录中创建了一个资源目录,并将jar文件复制到其中。但是,当然,您可以使用更通用的目录:

(defproject test-project "0.1.0-SNAPSHOT"
:description "Blah blah blah"
...
:resource-paths ["resources/Siebel.jar" "resources/SiebelJI_enu.jar"])

然后,从lein repl中,我可以创建Siebel Data Bean实例,例如

(def sbl (com.siebel.data.SiebelDataBean.))
(.login sbl "siebelServer" "user" "password")
...

如果你有一个较新的Java版本,你当然可以在路径规范中使用通配符,如下所示,用于更通用的目录:

:resource-paths ["/tmp/SiebelJars/*"]

答案 2
  1. 在项目中创建一个目录:

    mkdir maven_repository

  2. 将本地 jar 添加到此存储库:

    例如,以下命令将文件添加到 maven 存储库:jaad-0.8.3.jar

    mvn deploy:deploy-file -Dfile=jaad-0.8.3.jar -DartifactId=jaad -Dversion=0.8.3 -DgroupId=jaad -Dpackaging=jar -Durl=file:maven_repository

  3. 将以下内容添加到project.clj

    :repositories {"local" "file:maven_repository"}

  4. 现在,常规应该可以工作:lein deps

    $ lein deps Downloading: jaad/jaad/0.8.3/jaad-0.8.3.pom from local Transferring 0K from local [WARNING] *** CHECKSUM FAILED - Error retrieving checksum file for jaad/jaad/0.8.3/jaad-0.8.3.pom - IGNORING

警告可以忽略,因为jar将被签入项目,而不是从互联网上下载。

原始来源:使用带有 Leiningen 的本地 JAR(自复制以来已更改)


推荐