Ola*_*laf 12 clojure leiningen
我们正在托管一个公司存储库,它充当着名存储库的代理(例如Maven Central和Clojars).我希望Leiningen首先进入企业存储库.只有当公司存储库未能提供工件时,Leiningen才会询问标准存储库.这应该是我所有项目的默认行为.我需要做什么配置?
我已将公司存储库添加为〜/ .lein/profiles.clj中的镜像:
{:user {:mirrors {"our-repo" {:name "our-repo"
:url "http://our-repo/all/"}}}}
Run Code Online (Sandbox Code Playgroud)
不幸的是,此设置没有影响.Leiningen从Maven Central下载文物:
PS> lein repl
Retrieving org/clojure/clojure/1.5.1/clojure-1.5.1.pom from central
...
Run Code Online (Sandbox Code Playgroud)
更新
xsc建议使用指向公司存储库的镜像定义覆盖Maven Central存储库.有用.现在,而不是去外部Maven Repository Leiningen从公司存储库中检索工件.
他/她还建议指定一个额外的存储库定义来安装回退机制.不幸的是,这并不是很好,因为Leiningen抱怨这个设置:
:repositories detected in user-level profiles! [:user]
See https://github.com/technomancy/leiningen/wiki/Repeatability
Run Code Online (Sandbox Code Playgroud)
这个警告非常烦人.出于这个原因,我会弃权.还有另一种安装回退机制的方法吗?
这对我有用:
{: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"}}}}
Run Code Online (Sandbox Code Playgroud)
这可以处理通过我的 Nexus 镜像解决依赖关系并使用lein deploy.
我收到了烦人的“重复性”警告,但我正在努力消除它。
据我在Leiningen 的示例 project.clj中看到,您必须使用存储库的名称来镜像作为映射中的键:mirrors。所以,试试这个:
{:mirrors {"central" { ... }}}
Run Code Online (Sandbox Code Playgroud)
这很可能会完全替换存储库,因此您可能需要再次添加原始存储库:
{:mirrors {"central" {:url "..." }}
:repositories {"maven" {:url "http://repo1.maven.org/maven2/"}}}
Run Code Online (Sandbox Code Playgroud)