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



在Java中,我将使用路径比较两个文件路径,以确保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);

我似乎无法使用管道中的路径类。您如何在Groovy中进行比较?

除了将两个字符串分配到列表中并确保path1匹配path2的元素i的元素i之外,似乎没有一个好方法。

我要做的是在我的构建作业中添加检查,以验证Path2(命名,已安装的构建依赖项)确实位于Path1(我的工作区root)内部。

例如,如果path1 ="/some/path/to/jenkins/workspace1"和path2 ="/some/path/to/jenkins/workspace2/somen/dir",我应该将构建失败为失败的安全。

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

请参阅此答案。您可以使用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)

最新更新