Groovy:没有这样的文件异常,但是文件在那里?在交叉平台上复制文件

时间:2019-03-14 20:08:36

标签: linux windows jenkins groovy copy

在尝试复制文件时,我遇到了Groovy \ Jenkins的问题

我使用的代码如下:

public void copy(String sources, String destination) {

    Path source = Paths.get( join(this.script.WORKSPACE, sources) );
    Path target = Paths.get( join(this.script.WORKSPACE, destination) );

    Files.copy(source, target)

}

this.script.WORKSPACE是Jenkins工作区,如果此工作区是C:\Jenkins\Workspace\MyBranch,源是binaries\mybinary.dll,则join函数将返回:

C:\Jenkins\Workspace\MyBranch\mybinary.dll

在执行时,我收到以下错误:

java.nio.file.NoSuchFileException: Y:\Jenkins\workspace\MyBranch\mybinary.dll

但是文件在代理上。

问题是我使用xcopy的原因是我只需要在Windows目标上进行复制(并且工作正常,没有任何问题,我隔离了对复制功能的更改,现在Windows复制出现了问题)。

但是现在我还必须复制redhat平台。

所以我正在寻找一种跨平台的解决方案

谢谢!

1 个答案:

答案 0 :(得分:0)

所以我发现这是与詹金斯有关的问题。实际上,管道是在主服务器上执行的,而不是在代理程序上执行的,因此在不存在该文件的主服务器上查找文件。

我将不得不使用sh脚本或jenkins stash函数,但看来我不能在这里使用跨平台代码。