让我们开始说我的代码是有效的。我可以单击运行jar文件的批处理文件,从GIT下载一些代码。
Git gitRepo = Git.cloneRepository().setURI( remoteProjectPath )
.setDirectory(new File(destination))
.setCredentialsProvider( new UsernamePasswordCredentialsProvider( repoUser, repoPassword ) )
.setBranch(branch)
.setNoCheckout(true)
.call();
在Windows中,在我的用户个人资料文件夹中,我有一个包含以下内容的.gitconfig文件:
[http]
sslverify = false
当我双击批处理文件时,它可以工作。 但是,这是自动化过程的一部分。我需要Windows任务调度程序在午夜执行批处理文件。 (时间不重要,除了我不工作的时候。) 但我可以打开任务计划程序并单击任务,然后单击“运行”。它失败并带有sslverify标志。
"引起:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径& #34;
在我看来,.gitconfig仅在我(手动)执行进程时使用。有没有办法弄清楚JGit是否在由任务调度程序启动时尝试从不同的目录读取? 或者还有另一种方法可以让JGit使用sslverify = false来使用CloneCommand进行稀疏结账吗?
谢谢,
答案 0 :(得分:0)
我打了这么久,最后在我发布问题后找到答案。 在提及EGit时,我发现:How to change "Location" for "User Settings"
但它对我有用。我转到系统环境变量并创建了一个系统变量' HOME'并将其设置为包含我需要的.gitconfig文件的目录。现在,即使从Windows任务调度程序启动,该过程仍然有效。