【问题标题】:Maven builds in Jenkins failing, succeeding on command lineMaven 在 Jenkins 中构建失败,在命令行上成功
【发布时间】: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。

我现在不知道该怎么做。

【问题讨论】:

    标签: java maven jenkins


    【解决方案1】:

    这听起来像是 Jenkins 常见问题解答之一。检查https://wiki.jenkins-ci.org/display/JENKINS/My+software+builds+on+my+computer+but+not+on+Jenkins,尤其是在“桌面访问(Windows)”部分下

    【讨论】:

    • 感谢您提供附加链接。我已经尝试了两种用于 Jenkins 的 Gui 交互的解决方案(添加交互标志并在不同的用户下启动进程)。两者似乎都不起作用。
    【解决方案2】:

    您可能遇到了http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6468220,由于它无法在 JDK 中修复,您需要在代码中对其进行微调。

    【讨论】:

    • 我们没有使用受该错误影响的 JDK 版本。
    【解决方案3】:

    问题是当 Visio 启动时,它是作为 Jenkins 服务的子项启动的,该服务在没有桌面交互的情况下运行。 Microsoft 限制其 Office 产品操作,其中可能会生成用户看不到的提示。即使您添加了允许与桌面交互,它也不起作用,在我的情况下返回以下错误值 2032466051。解决方案是仅以用户身份运行它,并在每次我们需要重新启动服务器时手动启动 Jenkins 实例。

    【讨论】:

      猜你喜欢
      • 2013-07-07
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 2018-03-11
      • 2016-07-11
      • 1970-01-01
      相关资源
      最近更新 更多