fileOperations插件中的fileCopyOperation引发错误-文件复制操作:致命:需要Ant GLOB模式,但看到了'D:/Test/ABC.pdf'

时间:2018-12-19 16:35:11

标签: jenkins jenkins-pipeline

代码:

#include<stdlib.h>
#include<stdio.h>
#include<time.h>
void doubleArray(int vect[], int *dim)
{
    int n = *dim *2;
    *dim = n;
    vect = (int*)realloc(vect, n*sizeof(int));
}

void stampaArray(int vect[], int dim)
{
    for (int i=0;i<dim;i++)
    {
        printf("%d ",vect[i]);
    }
    printf("\n");
}

int main()
{
    printf("Insert a number between 1 and 4: ");
        int n;
    scanf("%d",&n);
    if ((n<1)||(n>4))
    {
        printf("Number not valid, try again: '");
        scanf("%d",&n); 
    }
    int *arr = (int*) malloc (n*sizeof(int));
    srand(time(NULL));
    int num;
    for (int i=0;i<220;i++)
    {
        num = rand();
        if (i==n)
        {
            doubleArray(arr, &n);
            stampaArray(arr, n);
        }
        arr[i]=num;
    }
    stampaArray(arr,n);
    return 0;
}

日志:

Error:
File Copy Operation:
FATAL: Expecting Ant GLOB pattern, but saw 'D:/Test/ABC.pdf'

文件复制操作中是否不允许绝对路径?

我读了一个链接,上面写着,如果我在通话上方放置一个目录,它就可以工作。但这对我的要求而言并不理想。我正在尝试通过读取配置文件来循环执行文件/文件夹操作。

有人请帮忙吗?

1 个答案:

答案 0 :(得分:0)

您可以使用反斜杠编写Windows路径,但是必须转义它们。

编辑:的确,您不能在includes参数中输入绝对路径。

def srcFileName = new File(fullSrcFilePath).name
def escapedSrcFolder = new File(fullSrcFilePath).getParent().replace('/', '\\\\')
def escapedDestFolderPath = destFolderPath.replace('/', '\\\\')
dir(escapedSrcFolder) {
    fileOperations([
        fileCopyOperation(
            flattenFiles: true,
            includes: srcFileName,
            targetLocation: escapedDestFolderPath
        )
    ])
}

编辑#2::如果从SCM获得管道,则不能使用File方法,因此对于这些情况,可以使用以下正则表达式:

def String getParent(String path) {
    path.replace('/', '\\') - ~/\\[^\\]+$/
}

def String getFileName(String path) {
    (path.replace('/', '\\') =~ /[^\\]+$/)[0]
}