maven - 如何打包 leiningen 项目以重新编译并包含所有库? [对于没有互联网连接的用户]

标签 maven clojure libraries leiningen

我正在举办 Clojure 研讨会,我希望人们能够修改和重新编译 Clojure 项目。挑战在于他们没有互联网连接 - 所以我需要立即向他们提供项目和库。

如何打包 leiningen 项目以重新编译并包含所有库?

假设

  • 他们在研讨会之前已在机器上安装了 leiningen。

编辑 这几乎与如何打包一个 Maven 项目以重新编译包含所有库的问题相同? [没有互联网连接]

最佳答案

将 ~/.m2 目录移到一边。运行您希望用户运行的所有 lein x leiningen 命令,还构建和测试您的项目(测试、安装、jar、uberjar 等)。这将为 Leiningen 本身以及您的项目下载(大量)依赖项。 $HOME/.m2 是您可以找到 Maven 依赖解析器拉取的所有 jar 文件的地方。

完成此操作后,添加 :offline? true 到project.clj,根据文档,这将 Prevent Leiningen from checking the network for dependencies.

参见Maven - alternative .m2 directory作为不必将 .m2 目录移到一边的替代方案。

为了让您的学生轻松使用它,最好创建一个独立的 zip 存档,其中包含整个 .m2 目录、您的项目和 Leiningen 本身,以及基本安装程序(bash 脚本或批处理文件)它将 .m2 目录移动或符号链接(symbolic link)到正确的位置,并将 lein 脚本添加到路径中。这种方法应该满足离线需求 - 我认为它涵盖了您需要的所有依赖项。

我假设您的学生将安装 java 并将其放在他们的 PATH 中。预运行您希望使用的所有 lein 命令很重要,因为其中一些命令有自己的依赖项,只有在首次运行时才会解决。

关于maven - 如何打包 leiningen 项目以重新编译并包含所有库? [对于没有互联网连接的用户],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23405699/

相关文章:

algorithm - Clojure 组顺序出现 - 改进功能

google-apps-script - OAuth2 库产生属性存储配额错误

linux - libtool 的 .la 文件有什么用?

java - Maven 通过 MAVEN_OPTS 指定设置文件位置

java - TFS 和 TestiNG - 可以在 TFS 2015 中执行 TestNG 测试吗?

compiler-construction - 如何创建 Clojure Lint?

clojure - 迭代地将函数应用于其结果而不生成 seq

.net - .Net 2.0 的代码契约和防御性编程库?

android - maven部署到nexus

java - Grizzly JAX-RS 未返回 400 错误请求