首页 > 解决方案 > 使用 maven 和 spring-boot 从 classPath 加载文件

问题描述

我有两个测试阶段:

  1. 第一阶段执行测试 -> 大部分测试使用 selenium 并将屏幕截图(或任何文档)保存到 target/文件夹
  2. 第二阶段找到特定的屏幕截图/文档(通过正则表达式)并将它们上传到服务器,为此我使用弹簧。(所以它像回调,经过测试)

我的问题是关于target文件夹和类路径。Maven 默认将所有内容从 复制src/resourcestarget并将其放入 classPath,但是:

  1. 当文件直接保存到target文件夹中时,它是否也放入了类路径->,因此我可以将它作为资源加载?
  2. 当用户使用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);
    }

感谢您的回答

标签: javaspringspring-bootmaven

解决方案


推荐阅读