在发布 Clojure 项目 Maven 包的持续部署过程中,脚本应该执行 “lein install” 还是 “lein uberjar”?

Under a Continuous Deployment process to publish a Maven package of a Clojure project, should the script execute "lein install" or "lein uberjar"?

提问人:Pedro Delfino 提问时间:1/13/2023 最后编辑:Pedro Delfino 更新时间:1/13/2023 访问量:89

问:

我通过 GitHub Actions 为这个 Clojure 项目构建了一个持续部署工作流。它是公共存储库的分支。

目标是每次调整文件时在 GitHub 注册表上发布一个 Maven 包(通常针对版本颠簸进行调整)。project.clj

它有效。查看工作流运行顺利。并且该包已成功发布

如文件所示,在脚本的“部署”部分之前,脚本上有一个执行cd.ymllein install

一位同事建议,应该使用命令而不是命令。lein installlein uberjar

根据官方文件:

lein uberjar # package the project and dependencies as standalone jar

另一方面:lein install

Install jar and pom to the local repository; typically ~/.m2.

1 - 在此 Maven 包发布工作上下文下,应使用哪个命令或?为什么?lein uberjarlein install

2 - 用代替有什么缺点吗?唯一的缺点是“矫枉过正的方面”?lein installlein uberjar

3 - 此外,即使 GitHub Actions 上最合适的方式,如果将其用作硬编码文档供其他开发人员在本地复制内容(如果需要),那么具有最大的可重复性不是更好吗?因此,不是合适的方法而不是?lein uberjarcd.ymllein installlein uberjar

Maven clojure GitHub-Actions Continuous-Deployment leiningen

评论

3赞 Lee 1/13/2023
Uberjar 用于打包应用程序及其所有依赖项,因此用户无需手动配置类路径。如果您要发布供其他开发人员使用的库,请不要发布 uberjar。 install 只会创建一个包含项目代码的最小 jar,并在 POM 文件中列出其他依赖项。您可能会发现使用比当前方法更容易,或者随后使用 maven 发布 jar。leinlein deploylein install
0赞 Pedro Delfino 1/13/2023
谢谢,@Lee!为什么会比?lein deploylein install
3赞 Lee 1/13/2023
看起来您当前的方法是将 jar 安装到本地存储库中,配置 maven,然后使用它来发布 jar。您应该能够将所有这些步骤替换为单个 .但是,如果它对你有用,你目前的方法应该没问题。lein deploy

答: 暂无答案