感谢你快速的回复,Alex。让我试着更详细地解释一下用例
我们将各种驱动程序作为独立的子项目列出,并根据需要作为`:local/root`坐标包含它们。我们有一个`:drivers`别名,它包含我们用于各种本地开发任务的所有驱动程序;我们不将它们作为顶级`:deps`包含,因为我们用不同的过程构建它们。
有时我们执行`clj -M:run`(这样就不会将驱动程序子项目包含在类路径上),有时我们执行`clj -M:drivers:run`(这样就把驱动程序子项目包含在内)...我们遇到的问题是,没有简单的方法来准备别名`:drivers`添加的子项目,除非手动`cd`到每个相应的目录并单独准备它们。
我想出的解决方法是,在单独的目录中创建一个空白的`deps.edn`文件,该文件包含与`:drivers`别名相同的`:local/root` `:extra-deps`,但位于顶级`:deps`之下。人们可以`cd`到这个目录,并在那里运行`clj -X:deps prep`,而不是必须为每个驱动程序目录单独执行操作。所以,目前我们的第一次设置说明基本上是
```
clj -X:deps prep && cd modules/drivers && clj -X:deps prep
```
在不同的文件夹中两次执行`clj -X:deps prep`并不是那么糟糕,但如果只需运行一次`clj -X:deps prep :aliases '[:drivers]'`(而不创建/维护假`deps.edn`文件)那就更好了。
可以说,我们可以将必须AOT(Ahead-of-Time编译)的文件捆绑成单独的工件,但是将它们推送到Clochars,或者设置一个S3 bucket作为Maven仓库,或者类似的东西(并且设置CI以在更改时自动更新)如果不是必须的,我并不想这么做。此外,这将使本地调整这些文件并测试更改变得更加困难。
关于影响同一台机器上的其他项目
我不确定我是否理解了为什么这会有所不同。我的理解是,这最终不会与有人手动将问题别名中的所有`:deps`/`:extra-deps`复制粘贴到项目`deps.edn`的顶级`:deps`中然后运行`clj -X:deps prep`有所不同。(唯一的不同之处在于我们可能准备的库比之前更多;但我们并没有以不同的方式准备材料。)