是否可以使用通配符'*'通过Apache Maven目标和选项列出特定目录?

时间:2019-04-09 16:10:30

标签: java maven automated-tests cucumber

我需要在Maven目标和选项命令中使用通配符逻辑列出特定目录。

当前的根目录是: mvn test -Dcucumber.options="C:/Users/Joe_Blogs/Desktop/AutoFramework/src/test/resources/features/Bookings/MakeBooking.feature"

我需要使用**来扫描项目文件夹,以便搜索给定的功能文件,因为文件夹名称(Bookings)可能会更改。 mvn test -Dcucumber.options="C:/Users/Joe_Blogs/Desktop/AutoFramework/src/test/resources/features/**/MakeBooking.feature"

在上面的示例中,**将需要引用各种不同的文件夹,而不仅仅是预订。

有什么想法吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

Maven支持分别由***表示的“ any”和“任何子孙”通配符。它是<fileset> Ant convention的子集。

该支持来自Apache Maven Shared Utils库。步行目录树,路径规范化,模式匹配等的实际逻辑在org.apache.maven.shared.utils.io包中分组。这些类在plugins supported by the the Maven Project之间提供了统一的文件系统处理。

正如参考文献所表明的那样,通配符处理既不是琐碎的逻辑,也不是在Maven本身之外的魔术应用。黄瓜必须以某种方式有意地支持语法。抱歉,但看起来Cucumber似乎不支持“任何后代”通配符。最接近的等效项是路径末尾的/*

但是,一种可能的解决方法是使用tags。标记单个文件可能看起来很愚蠢,但是这样做无需担心路径问题。示例:

mvn test -Dcucumber.options="--tags @MakeBooking"