我想使用的是成熟的,被广泛使用的并且最终建立和发展我和项目。有没有办法修改项目。clj告诉挑选一些罐子从当地的目录?

我有一些专有的罐子就不能上传到公共repos.

此外,可以是成熟的,被广泛使用的并且最终被用来维持一个"lib"directory题的项目?如果我和项目的分享同一个罐子,我不想要维持一个单独的复制为他们每个人。

感谢

有帮助吗?

解决方案

您可以把您的私人罐子在lib/,他们会在类路径的lein swank之类的目的;这似乎击败利用依赖管理工具的点,但如果你没有真正的的那些依赖关系管理,你可以把Leiningen作为“开源依赖关系管理工具”,也许要小心与lein clean

随着形势变得更加复杂 - 有涉及,它们进化私人罐的数量较多,你需要采取一些版本的信息对他们的考虑 - 创建私有Maven的回购可能是更合适的亚瑟的想法


(人力资源表示特定Leiningen部分的分界点以下......为继续在Clojure的土地总编译/依赖管理工具故事的信息,包括一些链接,我认为可以派上非常方便您的情况。)

此外,作为然而,对这个问题,其中针对Clojure的,与Leiningen最好的构建工具,而在传立获得,也是在区域的功能和波兰获得不断没有统一的协议 - 意思,特别是,它尚未完成。下面是从斯图尔特哈洛韦,务实书架的“编程Clojure的”的作者报价:“我2C:Leiningen是重要的一步,但仍有很多工作要做。”为全面发布和一个非常有趣的讨论,回复:构建工具和Clojure中的空间一样,看到的 Leiningen,Clojure的和库:我缺少的是对谷歌的Clojure组线程?许多与会者特别提到需要有不包含在任何地方库的依赖,当地或其他地方,并阐明他们想出了这样的场景的解决方案。也许你可以看到,如果有什么事,在那里它现在能够解决您的问题/解决可能会在将来,当功能集成熟了吗?

无论如何,这是可能的,Leiningen实际上可能不是有一个好故事还没有准备好对一些复杂的场景。如果你觉得这可能是你的情况也是如此(我的意思是,你认为私人回购主意),这里的一些链接到Maven基于从上述线程采取替代方案:的通晓行家的Clojure-行家-插件; 这个博客中的目标是成为人们试图用有用使用Clojure Maven的。我记得,Meikel Brandmeyer(也所以在他的kotarak的在线处理)使用摇篮(一个Groovy构建系统)用的插件,以适应Clojure的所谓Clojuresque;我从来没有尝试过自己,因为不知道关于Groovy的第一件事情,但他声称用它运行一个非常漂亮的建筑行为,我相信它有没有关系行家 - 这是在其本身加分对于我们中的一些。 : - )

其他提示

只需使用 :资源路径在project.clj文件。我使用它,例如连接到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数据bean的实例,e.g。

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

如果您有一个新的Java版本,你当然可以使用通配符在路径规范这样一个更一般的目录:

:resource-paths ["/tmp/SiebelJars/*"]
  1. 创建一个目录的项目:

    mkdir maven_repository

  2. 添加本地的罐子到这一储存库:

    例如,这种命令中增加了 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

警告可以忽略,因为罐子将进行检查,进入项目,而不是从互联网上下载。

原来源: 使用当地的罐子就是成熟的,被广泛使用的并且最终用 (改变,因为复制)

我觉得开发库时lein pom; lein jar; lein install效果很好。

为此在图书馆被开发和应用程序要求其将使用它无需任何:repositories富。


可替换地,lein do pom, jar, install是稍微更简洁。


这允许主叫像任何其他:dependencies [[project-name "version"]]

我相信“正确”的方法是创建私有Maven仓库这样就可以存储罐在一个位置,您的所有分支机构等将拿起变化。这可能是矫枉过正你做什么。我很好奇,如果这些是更简单的方法。

您可能喜欢使用的插件lein-localrepo https://github.com/kumarshantanu/lein-localrepo

一个最近的发展是菲尔的s3-wagon-private插件Leiningen: https://github.com/technomancy/ S3-车皮私人

此应该允许您发布工件到专用远程回购。

这些解决方案都没有工作过我。相反,我已经安装了本地存储库,并使用Maven的安装在本地仓库的jar文件,并加入当地的回购我project.clj

在命令行:

mvn deploy:deploy-file -DgroupId=local -DartifactId=bar \
    -Dversion=1.0.0 -Dpackaging=jar -Dfile=bar.jar \
    -Durl=file:repo

和我写我project.clj这样的:

(defproject foo "0.1.0-SNAPSHOT"
  :dependencies [[org.clojure/clojure "1.4.0"]
                 [local/bar "1.0.0"]]
  :repositories {"project" "file:repo"})

希望它能帮助。

[参考: https://gist.github.com/stuartsierra/3062743 ]

也许看看这个 先前的答案, 我提供逐步指示设置一个储存库的本地项目(可通过 file://)中,你可以安装的罐子。

最好的办法是建立一个私人JFrog /的Nexus artifactory的,有部署快照/版本,然后添加artifiactory作为仓库在你project.clj

其他更简单的方法是

静态HTTP 最简单的一种私有的版本库是Web服务器在一个完整的静态文件指向的目录。您可以使用file:/// URL在:仓库如果该目录是本地上Leiningen运行的机器来部署方式

<强> SCP 如果你已经有一台服务器设置了SSH公开金钥,SCP的运输发布和使用私人依赖一个简单的方法。将下面的内部defproject:

:plugins [[org.apache.maven.wagon/wagon-ssh-external "2.6"]]
:repositories [["releases" "scp://somerepo.com/home/repo/"]]

然后把defproject外面以下内容:

(cemerick.pomegranate.aether/register-wagon-factory!
 "scp" #(let [c (resolve 'org.apache.maven.wagon.providers.ssh.external.ScpExternalWagon)]
          (clojure.lang.Reflector/invokeConstructor c (into-array []))))

也有可能使用SCP运输部署到存储库,并从它通过HTTP消耗,如果你设置了nginx的或类似的服务资源库目录通过HTTP的东西。

N.B。 SCP部署到Clojars不再支持

原始来源是这里 https://github.com/technomancy /leiningen/blob/stable/doc/DEPLOY.md

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top