Leiningen error: Could not transfer artifact no supported algorithms found

Leiningen error: Could not transfer artifact no supported algorithms found

我正在尝试在我的 Clojure 应用程序中使用 jar 文件。我以前从未这样做过,但是阅读网上的各种文章后,我开始在我的项目中这样做:

mkdir maven_repository

mvn install:install-file -DgroupId=local -DartifactId=nlp -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dfile=original-nlp-1.0-SNAPSHOT.jar  -DlocalRepositoryPath=maven_repository 

在我的 project.clj 文件中我有:

 [local/nlp "1.0-SNAPSHOT"]

但是当我 运行:

lein clean
lein uberjar

我收到此错误:

Could not transfer artifact local:nlp:pom:1.0-SNAPSHOT from/to local (/salesslick/maven_repository/): no supported algorithms found

我检查过这样的事情:

lein uberjar

(Retrieving local/nlp/1.0-SNAPSHOT/nlp-1.0-SNAPSHOT.pom from local)
(Could not transfer artifact local:nlp:pom:1.0-SNAPSHOT from/to local   (file:/Users/charlottesville/projects/ollio/salesslick/maven_repository/): no supported algorithms found)
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.
Uberjar aborting because jar failed: Could not resolve dependencies

cat local/nlp/1.0-SNAPSHOT/nlp-1.0-SNAPSHOT.pom

cat maven_repository/local/nlp/1.0-SNAPSHOT/nlp-1.0-SNAPSHOT.pom

<?xml version="1.0" encoding="UTF-8"?>
  <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>local</groupId>
  <artifactId>nlp</artifactId>
  <version>1.0-SNAPSHOT</version>
  <description>POM was created from install:install-file</description>
</project>

lein --version
Leiningen 2.4.1 on Java 1.8.0_25 Java HotSpot(TM) 64-Bit Server VM

我做错了什么?

准时参加...

我有同样的问题,解决方案似乎是实际使用 maven 部署而不是安装。

因此命令将如下所示:

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

你当然还需要

:repositories {"project" "file:repo"}

在你的 defproject 和

[local/bar "1.0.0"]

在你的依赖项中。 请注意,在 -Durl=file:repo 文件中需要(虽然有点明显)并且 repo 是存储库根文件夹中的一个文件夹。

另一种完全使用 Leiningen 并忘记任何 mvn 命令来达到相同结果的方法是使用

lein deploy project local/bar 1.0.0 bar.jar

而不是上面显示的 mvn 命令。例如,这可以省去在 docker 容器上实际安装 Maven 的麻烦(根据容器 OS,这也可能很棘手)。

所有这些信息都来自 here

我不得不自己解决这个问题。经过一番谷歌搜索后,我得到了更多 困惑,因为有太多不同的解决方案。最后,它 结果 真的 简单。

Basically, I just used the lein-localrepo plugin. 

1. Add the plugin to my plugins section of profiles.clj i.e.


    {:user 
      {:plugins [[lein-ancient "0.6.10"]
                 [jonase/eastwood "0.2.3"]
                 [lein-kibit "0.1.3"]
                 [lein-bikeshed "0.4.1"]
                 [lein-localrepo "0.5.3"]]
      :dependencies [[slamhound "1.5.5"]]
       :aliases {"slamhound" ["run" "-m" "slam.hound"]}}}
  1. 运行 lein localrepo coords to get the artifact/id stuff

    lein localrepo 坐标 jcifs-1.3.18.jar

  2. 将 jar 添加到我的 .m2 存储库

    lein localrepo 安装 jcifs-1.3.18.jar jcifs/jcifs 1.3.18

  3. 将依赖添加到我的 project.clj

  4. 运行 lein deps 确保一切看起来都很好

  5. 在我的 clj 文件中,在 ns header

  6. 中添加了必要的 :import 行

工作完美!

这确实意味着如果我想在另一台机器上构建它,jar 文件有 要添加到该系统上的 .m2。理论上,您可以指定一个 项目特定的存储库目录,然后将其全部捆绑起来,但我更喜欢 把我的罐子放在一个地方。