如何配置Leiningen使用公司存储库?

时间:2014-03-28 15:06:06

标签: clojure leiningen

我们正在托管一个公司存储库,它充当众所周知的存储库(例如Maven Central和Clojars)的代理。我希望Leiningen首先进入企业存储库。只有当公司存储库未能提供工件时,Leiningen才会询问标准存储库。这应该是我所有项目的默认行为。我需要做什么配置?

我已将公司存储库添加为〜/ .lein / profiles.clj中的镜像:

{:user {:mirrors {"our-repo" {:name "our-repo"
                              :url "http://our-repo/all/"}}}}

不幸的是,此设置没有任何影响。 Leiningen从Maven Central下载文物:

PS> lein repl
Retrieving org/clojure/clojure/1.5.1/clojure-1.5.1.pom from central
...

更新

xsc建议使用指向公司存储库的镜像定义覆盖Maven Central存储库。有用。现在,而不是去外部Maven Repository Leiningen从公司存储库中检索工件。

他/她还建议指定一个额外的存储库定义来安装回退机制。 不幸的是,这并不是很好,因为Leiningen抱怨这个设置:

:repositories detected in user-level profiles! [:user]
See https://github.com/technomancy/leiningen/wiki/Repeatability

这个警告非常烦人。出于这个原因,我会弃权。还有另一种安装回退机制的方法吗?

2 个答案:

答案 0 :(得分:3)

这对我有用:

{:user {:mirrors {#".+" {:url "http://nexus.example.com:8081/nexus/content/groups/public"}}
        :repositories [["snapshots" {:id "NudaySnapshots"
                                     :url "http://nexus.example.com:8081/nexus/content/repositories/snapshots"}]
                       ["releases" {:id "NudayReleases"
                                    :url "http://nexus.example.com:8081/nexus/content/repositories/releases"
                                    :sign-releases false}]]}
 :auth {:repository-auth {#"nexus.example.com" {:username "deployment"
                                               :password "foo bar baz"}}}}

它处理通过我的Nexus镜像解析依赖关系以及使用lein deploy向其发布工件。

我收到恼人的“重复性”警告,但我正在努力摆脱它。

答案 1 :(得分:2)

就我在Leiningen's example project.clj中所见,您必须使用存储库的名称作为:mirrors地图中的关键字进行镜像。所以,试试这个:

{:mirrors {"central" { ... }}}

这很可能会完全替换存储库,因此您可能希望再次添加原始文件:

{:mirrors      {"central" {:url "..." }}
 :repositories {"maven"   {:url "http://repo1.maven.org/maven2/"}}}