欢迎!请参阅 关于 页了解更多关于这个功能的信息。
在 https://dev.clojure.org/jira/browse/TDEPS-9 中增加了对 Maven 仓库凭证的支持,但仅允许在默认位置(~/.m2/settings.xml 或 Maven 安装捆绑的设置文件)下的 settings.xml。
允许用户指定替代 Maven 设置的路径将有助于共享环境(例如,CI 服务器,其中构建应该隔离)。这可能可以通过一个新的可选键 :mvn/settings 实现。如果您感兴趣,我很乐意提供补丁。
:mvn/settings
另一种方案是支持 TDEPS-9 中 Thomas Spellman 的建议(允许在 deps.edn 中指定仓库凭据)可以解决相同的问题,并且有无需单独设置文件的优点。
评论者:alexmiller
我认为为这个目的定制功能是不合适的。Maven 会做什么?我们是否可以尊重它?
评者:cbowdon
感谢您考虑这个问题。Maven 允许通过命令行参数传递 settings.xml 的替代路径,所以为 clj 添加一个额外的 -Smaven-settings 选项可能很合适。
-Smaven-settings
评者:tsachev
我认为 tools.deps 使用的 Maven 设置构建器也支持使用系统属性 {{org.apache.maven.user-settings}} 来自定义 settings.xml 文件的位置。
clj -J-Dorg.apache.maven.user-settings=/my/settings.xml
感谢您的建议,Vladimir。不幸的是,这个系统属性在 Maven 3 中似乎不受支持:[MNG-5199](https://issues.apache.org/jira/browse/MNG-5199)。尽管如此,我自己还是尝试了,无论是使用 clj 还是 mvn,但都没有成功。
评论者:tcrawley
{{org.apache.maven.user-settings}} 系统属性(链接:[MavenSettingsBuilder.java](https://github.com/apache/maven/blob/maven-3.5.2/maven-core/src/main/java/org/apache/maven/settings/MavenSettingsBuilder.java#L38))被工具.deps 使用的 Maven 库版本(目前为 3.5.2)所支持。未成功指定的原因是因为 Clojure 脚本没有将 {{-J}} 选项(脚本中的 {{java_opts}})传递给(链接:[clojure](https://github.com/clojure/brew-install/blob/1.9.0/src/main/resources/clojure#L301))用来解析依赖的 Java 调用。如果您修改脚本以直接设置此 sysprop 或传递 JVM 选项,您可以看到 sysprop 是正在工作的。我并不主张将所有 JVM 选项传递给依赖解析调用是一个解决方案,只是确认这个 sysprop 实际上起作用的一种方式。
是的,不想将所有 JVM 选项传递给类路径生成调用。可能需要创建一种特定的方法来做到这一点,或者以不同的方式传递这个属性。