我需要在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"
在上面的示例中,**将需要引用各种不同的文件夹,而不仅仅是预订。
有什么想法吗?
感谢您的帮助。
答案 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"