我使用 groovy 编写了一个自定义 gradle 插件来执行基本的 svn 任务,例如 Checkout、Clean、Tag 等。groovy 类调用 svn 命令行客户端来执行这些操作,当我在我的 Windows 系统上运行它时它工作正常但同样当我在 linux 系统 (Centos) 上运行插件时,它会出现以下错误。
svn: E170000: '%22https://source.mycompany.net/svn/MyProject/trunk%22' 的 URL 方案无法识别
我能够通过命令提示符或 shell 脚本对命令行客户端进行相同的调用,而不会出现任何问题。那么和有什么区别
这是我的代码示例:
String command =String.format("svn co -r %d --non-interactive --trust-server-cert -- username %s --password %s --depth infinity \"%s\" \"%s\"",
getRevision(),
getUserName(),
getUserPassword(),
getSrcUrl(),
getDir());
Process svnProcess = Runtime.getRuntime().exec(command);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(svnProcess.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(svnProcess.getErrorStream()));
String statusOutputLine =""
while ((statusOutputLine = stdInput.readLine()) != null)
{
logger.quiet(" " + statusOutputLine);
}
while (( statusOutputLine = stdError.readLine()) != null)
{
logger.error(statusOutputLine)
throw new Exception(statusOutputLine)
}
logger.quiet("Successfully Checked out the work space")
我确实在系统上安装了霓虹灯
-bash-4.1$ svn --version svn,版本 1.6.11 (r934486) 编译 2011 年 6 月 25 日,11:30:15
版权所有 (C) 2000-2009 CollabNet。Subversion 是开源软件,请参见http://subversion.tigris.org/ 本产品包括由 CollabNet 开发的软件(http://www.Collab.Net/)。
以下存储库访问 (RA) 模块可用:
- ra_neon :使用 Neon 通过 WebDAV 协议访问存储库的模块。
- 处理“http”方案
- 处理“https”方案
- ra_svn :用于使用 svn 网络协议访问存储库的模块。
- 使用 Cyrus SASL 身份验证
- 处理“svn”方案
- ra_local :用于访问本地磁盘上的存储库的模块。
- 处理“文件”方案