【发布时间】:2015-10-06 06:16:05
【问题描述】:
我们正在 maven 中自定义站点生成,其中一件事就是调用 Visio 让它将一些图表转换为 png。我们使用调用 Visio 的 vbs 脚本,并通过调用 Process proc = Runtime.getRuntime().exec(command); 从 java 类调用,其中命令为 cmd /c "cd "C:\Path\To\Module\site\target\staging"&&exportVisioSvg.vbs "C:\Path\To\inFile.vsd" "C:\Path\To\outFile.png""
现在这段代码在我自己的机器上执行得很好。调用 Visio 并生成一个文件。当我在托管 Jenkins 实例的服务器上运行它时,它也能正常工作。当我自己运行命令时,它工作得很好。最后,当我转到 Jenkins\workspace 并在那里执行 maven 构建时,它工作得很好。
但是,当我使用完全相同的命令(我复制并粘贴它)在 jenkins 中运行构建时,它不会生成 Visio 图表。其他一切都运行良好,并且在我们自己抛出的错误之外没有堆栈跟踪,当图像不在它应该在的位置时就会消失。进程的退出代码也是 0,并且该进程生成的 stdout 或 stderr(Windows 等效项)都没有输出,它必须完成,否则退出代码将为 -1。超时不是问题,因为它有 50000 毫秒的运行时间,但总是在一秒或更短的时间内返回(您可以看到在调用脚本后立即抛出错误)。
我将 Jenkins 切换为在安装了所有内容的管理员帐户下运行(将其从 SYSTEM 中移出),因此它应该可以访问 PATH。
我现在不知道该怎么做。
【问题讨论】: