java - 使用 maven 和 spring-boot 从 classPath 加载文件
问题描述
我有两个测试阶段:
- 第一阶段执行测试 -> 大部分测试使用 selenium 并将屏幕截图(或任何文档)保存到
target/
文件夹 - 第二阶段找到特定的屏幕截图/文档(通过正则表达式)并将它们上传到服务器,为此我使用弹簧。(所以它像回调,经过测试)
我的问题是关于target
文件夹和类路径。Maven 默认将所有内容从 复制src/resources
到target
并将其放入 classPath,但是:
- 当文件直接保存到
target
文件夹中时,它是否也放入了类路径->,因此我可以将它作为资源加载? - 当用户使用
mvn clean install
时,它会自动运行测试,所以 maven 创建target
文件夹,将文件放在 classPath 中,一切都应该工作,但是如果用户只是用 maven 创建 jar,然后使用 jar 运行测试呢?该target
文件夹将不存在,那么将在 classPath 中放入什么?假设问题 1 成立,如果我保存一些东西target
- > 它不会存在并且不会被放入 classPath?如果用户java -jar <jarfilename>.jar
从资源中运行没有文件将被放入类路径?
我试图了解,如果从 classPath 加载文件在本地是否相同,并且如果在某些 CI 服务器上完成。
我使用以下方法通过类路径中的正则表达式查找资源:
private static Resource[] loadResources(String regexp ) throws IOException {
ClassLoader cl = FileUtils.class.getClassLoader();
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(cl);
return resolver.getResources(regexp);
}
感谢您的回答
解决方案
推荐阅读
- c++ - 如何在 C++ 中的同一函数中使用字符串和双精度数
- java - 搜索树形图,然后按顺序遍历所有大于某个键的条目
- python - 如果给定字符串在任何子列表中,则返回子列表的第一个索引
- android - Android\iOS 强制断开所有应用的 BLE 设备
- php - 单击 PHP 中的项目时如何获取更多信息?
- javascript - 如何在 ExpressJS 中的 HTML 表单上添加值
- atom-editor - Atom 编辑器:Hashtag 创建括号 - JavaScript 编辑
- bash - 使用 perl 就地替换将软链接/符号链接更改为静态文件
- c++ - stod 转换一些 sig 无花果被切断
- keras - Keras 中的课程数量错误