在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)