Ced*_*tin 10 clojure maven leiningen
关于Clojure提到Maven的文章/博客/问题/答案的数量,我感到有点惊讶.
在作为Java开发人员工作大约十年的时间里,从事桌面应用程序和webapps工作,我从未使用Maven一次(通常 - 这是个人意见,但我知道有些人的想法是相同的 - 我的项目'已经看到使用Maven包括"厨房水槽",而那些建造了更"控制"的构建过程,其中"更清洁",生产更小的罐子,更快的构建时间等).
当你想要构建一个Clojure应用程序时Maven是一个要求吗?
当您想使用Leiningen时,Maven是强制性的吗?例如,我可以"手动"将外部jar作为依赖项添加到leiningen项目中,而不需要Maven吗?
我认为我的问题归结为:你可以在Clojure/JVM世界中逃脱而不使用Maven,就像你可以构建,测试,打包和发送Java桌面,webapps和Android应用程序而不需要Maven一样吗?
Dav*_*Ray 14
简短的回答:没有.Clojure只是一个jar,您可以像任何其他Java库一样使用它作为"原始".
更长的答案:Maven并不是一个要求,但Clojure周围的工具,特别是Leiningen,是高度Maven对齐的,所以如果你只是服从Maven的意愿,你的生活会更容易.但是,通过一点点工作,没有Maven就不那么难相处.在工作中,我使用了Leiningen和我们现有的基于Ant/Ivy的构建基础架构.我使用Ant来解决依赖关系(来自我们策划的内部仓库),然后使用Leiningen的hack :resource-paths来获取它来获取非Maven罐子.在某些时候我会做一个真正的插件来做这些事情,但到目前为止它一直对我很好.
此外,如果您是Eclipse人员并使用CounterClockwise,您可以像处理Eclipse中的任何其他Java项目一样处理您的项目,手动管理类路径.碰巧你在那里也有一些Clojure代码.
当然,这两种方法的缺点是,如果你想获取Maven中心或Clojars可用的东西,你要么必须为你的基础设施设置某种镜像,要么手动下拉传递依赖并添加他们到你的项目.
你不必使用maven或leiningen.你可以运行clojure REPL
java -jar clojure-1.3.0.jar
Run Code Online (Sandbox Code Playgroud)
它会工作得很好.我知道你来自哪里,因为一年前,我和你在同一条船上.从未使用过maven,看过几个不太好的项目,使用它很差,而且一般不信任maven.Ant + ivy很棒,谁需要maven?
由于使用了leiningen,并开始了我们有一个非常好的设置maven配置的新工作,我完全改变了我的调子; 我现在认为maven是伟大的,而且我更喜欢蚂蚁,我已经使用了很长时间.
特别是对于clojure,leiningen的一些优点是:
所以,虽然没有leiningen肯定可以使用clojure,但老实说,我不明白为什么你会这么想.在我看来,在日常开发中有太多的好处,不使用它.
正如其他人正确指出的那样,Maven 不是 Clojure 的强制性要求。
但是,我想鼓励您接受 Maven(直接或通过 leiningen)。它在 Clojure 世界中有一些很大的优势:
PS 和你一样,5 年前我并没有真正看到 Maven 的意义。然后我试了一下,看看它对我的工作流程有多么强大。现在我是一个皈依者 :-)