(leiningen,s3-wagon-private)如何在私有S3 repo中搜索依赖项?

时间:2016-04-23 14:47:46

标签: clojure leiningen

我正在尝试使用s3-wagon-private插件。我有两个lein项目:

  • X:我为做一些数据修改而创建的库。有一些第三方依赖。
  • Y:我为使用我的数据库而创建的库,有X和一些第三方依赖项。

我的〜/ .lein / profiles.clj文件中有以下内容:

{:repl {:dependencies [[org.clojure/tools.nrepl "0.2.12"]]}
 :user {:plugins [[cider/cider-nrepl "0.10.0"]
              [s3-wagon-private "1.2.0"]]
 :signing {:gpg-key "0xabcdef12"}
 :repositories [["private" {:url "s3p://acme/releases/"
                            :username :env
                            :passphrase :env}]]}}

当我在项目X中运行lein deploy private时,一切正常并且会部署到S3。

当我在项目Y中运行lein deploy private时,它抱怨无法找到项目X.

Could not find artifact X:X:jar:0.7.0 in central (https://repo1.maven.org/maven2/)
Could not find artifact X:X:jar:0.7.0 in clojars (https://clojars.org/repo/)
This could be due to a typo in :dependencies or network issues.
If you are behind a proxy, try setting the 'http_proxy' environment variable.

换句话说,它不是在我的私人S3回购中试图找到项目X.我该如何解决这个问题?

更新时间:2016-04-25

在评论中,丹尼尔康普顿问道:

  

在项目Y中运行lein deps会发生什么?从您的错误消息,它看起来像存储库"私人"没有出现在项目Y中。

当我在项目Y中运行lein deps时, NOT 会出现任何错误:

(py3)aj-laptop:red aj$ lein deps
(:repositories detected in user-level profiles! [:user] 
See https://github.com/technomancy/leiningen/wiki/Repeatability)

所以我将以下内容添加到项目Y中的project.clj中。这使lein deploy private按预期工作:

:repositories [["private" {:url "s3p://acme/releases/"
                           :username :env
                           :passphrase :env}]]

所以似乎Project Y没有拿起:来自〜/ .lein / profiles.clj文件的存储库。但是Project X似乎很好地接受了它。

1 个答案:

答案 0 :(得分:1)

问题是用户:repositories文件中指定了~/.lein/profiles.clj。莱宁根doesn't really like this。我怀疑这里有一个潜在的错误,也许是在Lein插件和依赖解析系统之间的交互中。由于通常不建议将:repositories放入您的用户个人资料中,因此人们之前可能不会遇到此问题。

我认为最好的解决方案可能是为每个文件添加:repositories,虽然可能会很烦人。