我正在举办 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/