我想在2个模块A和B之间共享测试资源。在测试资源中,我有一些文件的目录。喜欢这个
-dir
----f1
----f2
我根据Share test resources between maven projects完成了所有工作。现在从B测试我可以使用如下语法访问资源:
this.getClass().getClassLoader().getResource("dir/f1")
它完美无缺。但我不希望硬核所有文件名,如f1
或f2
。我真正想要的是从目录中获取所有文件。像
File foo = new File(this.getClass().getClassLoader().getResource("dir").getFile());
assert foo.isDirectory()
foo.list()
...
但是当我以这种方式创建foo时,它甚至不存在(foo.exist()
返回false)。
我该如何处理?
更新。使用ant的替代解决方案
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<configuration>
<target>
<fileset id="d" dir="${basedir}/src/test/resources/dir" includes="*"/>
<pathconvert property="d" refid="d">
<map from="${basedir}/src/test/resources/" to=""/>
</pathconvert>
<touch file="${basedir}/src/test/resources/d/listOfCharts.txt"/>
<echo file="${basedir}/src/test/resources/d/listOfCharts.txt" message="${charts}"/>
</target>
</configuration>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
答案 0 :(得分:1)
您谈到的方法会创建一个JAR,可以在以后的测试中使用。你不能用这种方式列出Jar的内容。您需要使用Jar,您需要将其作为Jar专门读取