maven - JVM 上的 Clojure 是否必须使用 Maven?

标签 maven clojure leiningen

关于 Clojure 提到 Maven 的文章/博客/问题/答案的数量之多,我有点惊讶。

作为一名 Java 开发人员,在桌面应用程序和 web 应用程序上工作了大约十年,我从来没有使用过一次 Maven(通常——这是个人观点,但我知道有些人确实有同样的想法——我的项目已经看到使用 Maven 包括“厨房水槽”,而那些使用更“受控”的构建过程构建的方式“更清洁”并产生更小的 jar ,更快的构建时间等)。

当您想要构建 Clojure 应用程序时,是否需要 Maven?

当你想使用 Leiningen 时,Maven 是强制性的吗?例如,我可以“手动”将外部 jar 作为依赖项添加到 leiningen 项目,而不需要 Maven?

我想我的问题可以归结为:在 Clojure/JVM 世界中,您是否可以在不使用 Maven 的情况下摆脱困境,就像您无需 Maven 就可以构建、测试、打包和发布 Java 桌面、Web 应用程序和 Android 应用程序一样?

最佳答案

简短的回答:不。Clojure 只是一个 jar,您可以随意使用它作为“原始”,就像任何其他 Java 库一样。

更长的答案: Maven 不是必需的,但是围绕 Clojure 的工具,尤其是 Leiningen,是高度 Maven 对齐的,所以如果你服从 Maven 的意愿,你的生活会更轻松。但是,只要稍加努力,没有 Maven 也不会那么难相处。在工作中,我混合使用 Leiningen 和我们现有的基于 Ant/Ivy 的构建基础架构。我使用 Ant 来解决依赖关系(来自我们策划的内部存储库),然后使用 Leiningen 的 :resource-paths 的 hack让它拿起非 Maven jar 。在某个时候,我会制作一个真正的插件来做这些事情,但到目前为止它对我来说一直很好。

此外,如果您是 Eclipse 人员并使用 CounterClockwise,您可以像对待 Eclipse 中的任何其他 Java 项目一样对待您的项目,手动管理类路径。碰巧你也有一些 Clojure 代码。

当然,这两种方法的缺点是,如果你想从 Maven 中心或 Clojars 中获取可用的东西,你要么必须为你的基础设施设置某种镜像,要么手动拉下传递依赖并添加他们到你的项目。

关于maven - JVM 上的 Clojure 是否必须使用 Maven?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12555855/

相关文章:

java - 无法从 IntelliJ 连接到 AWS rekognition API

binding - 将向量作为绑定(bind)传递给 for 宏时出现问题

clojure - 在ring/compojure中使用路由/文件与路由/资源

clojure - 如何使用 core.async 正确批处理消息?

heroku - Clojure Heroku 项目中的 secret 依赖项

clojure - "Best Practice"用于使用 native 库的 clojure 库?

java - 并行运行多个 jmx 文件

java - 使用 SplitVerifier Java 7 到 Java 9

java - 将 GWT 与 Spring 集成