【问题标题】:Dependencies in maven local repositories with leiningenmaven 本地存储库中的依赖项与 leiningen
【发布时间】:2012-02-03 01:13:14
【问题描述】:

我正在clojure 中启动lein new 项目,并想使用goose 文章提取库。不幸的是,我在任何公开可用的 maven 存储库中都找不到该库的 jar,因此我着手将其添加到本地 maven 存储库。

在项目目录中,我复制了goose jar及其pom.xml文件并做了

mkdir maven-repo
mvn install:install-file -Dfile=goose-2.1.6.jar -DartifactId=goose -Dversion=2.1.6 \
    -DgroupId=local -Dpackaging=jar -DlocalRepositoryPath=maven-repo -DpomFile=pom.xml

并将以下内容添加到project.clj

:repositories {"local" ~(str (.toURI (java.io.File. "maven-repo")))}

[local/goose "2.1.6"]:dependencies。现在,当我执行lein deps 时,我将 goose-2.1.6.jar 文件添加到 lib 目录,但没有 goose 的依赖项。它们列在 goose 的 pom.xml 文件中。

除了在我的project.clj 中列出 goose 的依赖项之外,还有其他方法可以解决此问题吗?

【问题讨论】:

    标签: maven clojure leiningen


    【解决方案1】:

    您可以使用 lein-localrepo 代替冗长的 mvn 命令: https://github.com/kumarshantanu/lein-localrepo

    像这样安装:

    lein localrepo coords target/goose-2.1.6.jar | xargs lein localrepo install

    但是,仅此一项并不能帮助在 repo 中安装 POM 文件。你应该另外运行这个:

    cp pom.xml ~/.m2/repository/goose/goose/2.1.6/goose-2.1.6.pom

    请注意,在此示例中,Goose 将安装为 groupId=gooseartifactId=goose。如果你愿意,你可以覆盖它,而且可能你应该这样做。

    【讨论】:

    • 是的,在使用冗长的 mvn 命令之前,我已经看过您的 lien-localrepo 项目。我选择了 mvn,因为它只有一个命令 :)。不管怎样,我也要试试这个方法。当我执行lein deps 时,你能告诉我这是否会获得 goose 的依赖项吗?
    • 太棒了。使用这种方法,我在我的 lib 目录中获得了 goose 的依赖项。你能解释一下有什么区别吗?谢谢一堆人:)
    • 另外,这些本地 jar 应该如何进行版本控制?我能想到的就是将它们添加到供应商目录中,并在克隆该项目的每个系统上运行上述 localrepo 命令。有更好的方法吗?
    • 工件的pom.xml 预计会在 Maven 存储库中以<artifactId>-<version>.pom 的形式出现,这就是为什么在上面的第二个命令中将pom.xml 复制为新名称。
    • 本地 JAR 的管理/版本控制取决于适合您的方式。如果我必须这样做,我会将它们存储在一个 groupId 下(例如“onlylocal”)并将该目录存储在 S3 或 Github 私有存储库或任何地方,以便我团队中的所有成员都可以克隆同一个存储库。
    猜你喜欢
    • 2014-09-28
    • 2014-03-01
    • 2020-07-13
    • 2014-06-18
    • 1970-01-01
    • 2016-11-13
    • 2012-02-05
    • 2014-05-31
    • 1970-01-01
    相关资源
    最近更新 更多