我正在开发一个使用该库的库和应用程序。
我没有此库的任何远程存储库,它只作为常规项目存储在GitHub上。
在我的应用程序中,我想使用这个库作为依赖项,我想到的是拥有这样的结构:
.
├── README.md
├── project.clj
├── repo
├── src
├── target
├── libraries
│ └── my-library
└── test
其中my-library
是git submodule
我的图书馆。如何让我的应用程序知道这种依赖?
2016年的解决方案是什么?
答案 0 :(得分:9)
不需要将lib包含为git子模块。 你可以"发布"本地的my-library项目。
只需转到my-library
项目文件夹并运行lein pom; lein jar; lein install
即可。这里的关键部分是lein install
,它将jar和pom安装到本地存储库;通常为〜/ .m2。
转到使用此库的项目,只需在project.clj
:dependencies [[my-library "version"]]
boot pom; boot jar; boot install
中将其声明为依赖项,它就应该有效。
修改强>
同样,如果您使用Boot,则可以运行//this partical >> SubProgram "opengl " { <<<
Keywords { "LIGHTMAP_ON" "DIRLIGHTMAP_ON" "HDR_LIGHT_PREPASS_OFF" }
Vector 0 [_Color]
SetTexture 0 [_MainTex] 2D 0
SetTexture 1 [_LightBuffer] 2D 1
SetTexture 2 [unity_Lightmap] 2D 2
"!!ARBfp1.0
PARAM c[2] = { program.local[0],
{ 8 } };
答案 1 :(得分:2)
使用git子模块或基于本地文件的方法来管理Clojure中的库并不常见。 Clojure利用标准的Java生态系统方法进行库管理。通常,这涉及构建和部署库到公共Maven存储库,如Clojars(或Maven Central)。如果您只在自己的组织中使用它,那么组织级Maven存储库还有其他选项。
然后,您可以在自己的项目中使用该库,将其声明为所选构建工具中的依赖项。在Clojure中,最常用的工具是Leiningen,您可以将该库的使用声明为dependency。
其他替代方案是Maven(非常类似于Leiningen,但是采用XML格式)或Boot,这需要采用不同的方法。
答案 2 :(得分:2)
更简单的解决方案是使用此处记录的lein checkouts
:https://github.com/technomancy/leiningen/blob/master/doc/TUTORIAL.md#checkout-dependencies
在项目的顶层创建一个目录checkouts
(与src
目录平行)。在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等。这意味着您无需制作&amp;每次进行tupelo
中要使用的更改时,(重新)从lib clj
安装一个jar。