.
├── README.md
├── project.clj
├── repo
├── src
├── target
├── libraries
│ └── my-library
└── test
在其中,my-library
是我的库的 git submodule
。如何让我的应用程序知道这个依赖关系?
2016年的解决方案是什么?
.
├── README.md
├── project.clj
├── repo
├── src
├── target
├── libraries
│ └── my-library
└── test
在其中,my-library
是我的库的 git submodule
。如何让我的应用程序知道这个依赖关系?
2016年的解决方案是什么?
不必将lib作为git子模块包含。您可以在本地“发布”my-library项目。
只需转到my-library
项目文件夹并运行lein pom; lein jar; lein install
。这里的关键部分是lein install
,它将jar和pom安装到本地存储库;通常是~/.m2。
进入使用此库的项目,并在您的project.clj
中声明它作为依赖项,如:dependencies [[my-library "version"]]
,然后它应该可以工作。
编辑:同样,如果您正在使用Boot,则可以运行boot pom; boot jar; boot install
lein checkouts
,如此文档所述:https://github.com/technomancy/leiningen/blob/master/doc/TUTORIAL.md#checkout-dependencies
在项目的顶层目录(与src
目录平行)创建一个名为checkouts
的文件夹。在checkouts
文件夹中,只需创建到包含库代码的项目目录的符号链接。例如,考虑一个名为clj
的项目和一个名为tupelo
的库。
drwxrwxr-x 10 alan alan 4096 Jan 5 12:09 clj/
drwxrwxr-x 11 alan alan 4096 Jan 9 20:01 tupelo/
该项目 clj
的样子如下:
> d clj clj/* clj/checkouts/*
drwxrwxr-x 10 alan alan 4096 Jan 12 10:36 clj/
drwxrwxr-x 2 alan alan 4096 Oct 14 09:23 clj/checkouts/
lrwxrwxrwx 1 alan alan 17 Oct 30 16:44 clj/checkouts/tupelo -> /home/alan/tupelo/
drwxrwxr-x 2 alan alan 4096 Aug 31 10:05 clj/doc/
-rw-rw-r-- 1 alan alan 11219 Aug 31 10:05 clj/LICENSE
-rw-rw-r-- 1 alan alan 794 Jan 5 12:09 clj/project.clj
-rw-rw-r-- 1 alan alan 457 Aug 31 10:05 clj/README.md
drwxrwxr-x 2 alan alan 4096 Jan 3 09:01 clj/resources/
drwxrwxr-x 3 alan alan 4096 Aug 31 10:05 clj/src/
drwxrwxr-x 8 alan alan 4096 Nov 14 16:26 clj/target/
drwxrwxr-x 3 alan alan 4096 Sep 29 22:31 clj/test/
现在,当构建clj
项目时,它将(始终)使用来自~/tupelo
的源代码,而不是Clojars、Maven等。这意味着您不必每次想要在clj
中使用更改时都制作和(重新)安装lib tupelo
中的jar。
my-library
作为git submodule
包含进来?特别是,它与项目的关系是否不仅仅是另一个依赖项? - Nathan Davis