在通过代理访问互联网的环境中,{{clj}} 无法解析 Git 依赖。
`
克隆:https://github.com/cognitect-labs/test-runner.git
构建类路径时出错。 https://github.com/cognitect-labs/test-runner.git:无法打开 git-upload-pack
org.eclipse.jgit.api.errors.TransportException: https://github.com/cognitect-labs/test-runner.git: 无法打开 git-upload-pack
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:248)
at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:306)
at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:200)
at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:89)
at clojure.tools.gitlibs.impl$call_with_auth.invokeStatic(impl.clj:50)
at clojure.tools.gitlibs.impl$call_with_auth.invoke(impl.clj:41)
at clojure.tools.gitlibs.impl$git_clone_bare.invokeStatic(impl.clj:71)
at clojure.tools.gitlibs.impl$git_clone_bare.invoke(impl.clj:68)
at clojure.tools.gitlibs.impl$ensure_git_dir.invokeStatic(impl.clj:110)
at clojure.tools.gitlibs.impl$ensure_git_dir.invoke(impl.clj:100)
at clojure.tools.gitlibs$resolve.invokeStatic(gitlibs.clj:33)
at clojure.tools.gitlibs$resolve.invoke(gitlibs.clj:29)
at clojure.tools.gitlibs$procure.invokeStatic(gitlibs.clj:47)
at clojure.tools.gitlibs$procure.invoke(gitlibs.clj:41)
at clojure.tools.deps.alpha.extensions.git$eval925$fn__927.invoke(git.clj:41)
at clojure.lang.MultiFn.invoke(MultiFn.java:239)
at clojure.tools.deps.alpha$expand_deps.invokeStatic(alpha.clj:189)
at clojure.tools.deps.alpha$expand_deps.invoke(alpha.clj:172)
at clojure.tools.deps.alpha$resolve_deps.invokeStatic(alpha.clj:239)
at clojure.tools.deps.alpha$resolve_deps.invoke(alpha.clj:221)
at clojure.tools.deps.alpha.script.make_classpath$create_classpath.invokeStatic(make_classpath.clj:59)
at clojure.tools.deps.alpha.script.make_classpath$create_classpath.invoke(make_classpath.clj:52)
at clojure.tools.deps.alpha.script.make_classpath$run.invokeStatic(make_classpath.clj:70)
at clojure.tools.deps.alpha.script.make_classpath$run.invoke(make_classpath.clj:64)
at clojure.tools.deps.alpha.script.make_classpath$_main.invokeStatic(make_classpath.clj:109)
at clojure.tools.deps.alpha.script.make_classpath$_main.doInvoke(make_classpath.clj:84)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.lang.Var.applyTo(Var.java:705)
at clojure.core$apply.invokeStatic(core.clj:665)
at clojure.main$main_opt.invokeStatic(main.clj:491)
at clojure.main$main_opt.invoke(main.clj:487)
at clojure.main$main.invokeStatic(main.clj:598)
at clojure.main$main.doInvoke(main.clj:561)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.lang.Var.applyTo(Var.java:705)
at clojure.main.main(main.java:37)
原因:org.eclipse.jgit.errors.TransportException: https://github.com/cognitect-labs/test-runner.git: 无法打开 git-upload-pack
at org.eclipse.jgit.transport.TransportHttp.connect(TransportHttp.java:592)
at org.eclipse.jgit.transport.TransportHttp.openFetch(TransportHttp.java:345)
at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:137)
at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:123)
at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1269)
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:237)
... 35 more
原因:java.net.ConnectException: 连接被拒绝 (Connection refused) github.com
at org.eclipse.jgit.util.HttpSupport.response(HttpSupport.java:213)
at org.eclipse.jgit.transport.TransportHttp.connect(TransportHttp.java:506)
... 40 more
`
原则上,tools.gitlibs 已经通过 JGit 支持使用标准 JVM 配置代理服务器(链接: https://docs.oracle.com/javase/8/docs/api/java/net/doc-files/net-properties.html#Proxies 文本:系统属性)。只需传递{{-Dhttps.proxyHost=proxy.my.org -Dhttps.proxyPort=3128}}就可以为大多数用户修复这个问题。然而,目前无法将这些标志传递到 {{clojure}} 脚本中的 {{make-classpath}} 调用中。{{-J}}标志仅传递到最后 {{java}} 调用,而不是传递到真正解析依赖的 {{make-classpath}} 调用中。
所以一个直接的方法是在 {{clojure}} 脚本中允许将额外的标志传递给 {{make-classpath}} 调用。