Jenkins Pipeline-如果我不能使用Java Path类,如何比较文件路径?

时间:2018-12-19 02:34:33

标签: jenkins groovy jenkins-pipeline

在Java中,我将使用Paths比较两个文件路径,以确保path1可以是path2的子代。

Path path1 = Paths.get("/path/to/jenkins/workspace1").normalize();
Path path2 = Paths.get("/path/to/jenkins/workspace1/some/dir").normalize();

path2.startsWith(path1);

我似乎无法在管道中使用Path类。您将如何比较常规?

除了将两个字符串分成列表并确保path1中的元素i与path2中的元素i匹配外,似乎没有什么好办法。

我想做的是向我的构建作业中添加一个检查,以验证path2(一个命名的,已挂载的构建依赖项)确实位于path1(我的工作空间根目录)内。

例如,如果path1 =“ / some / path / to / jenkins / workspace1”和path2 =“ / some / path / to / jenkins / workspace2 / some / dir”,则我应该以失败保护的方式使构建失败。

2 个答案:

答案 0 :(得分:0)

我能够通过使用全局管道库并从中调用比较方法来导入路径。有点丑陋,但可以。

答案 1 :(得分:0)

请参见this answer。您可以使用URI类来生成规范化的路径,然后使用字符串比较:

def path1 = new URI("/path/to/jenkins/workspace1").normalize().toString()
def path2 = new URI("/path/to/jenkins/workspace1/some/dir").normalize().toString()
path2.startsWith(path1)