Как использовать ресурсы maven также в качестве тестовых ресурсов

У меня есть проект maven, который загружает файл xslt и выполняет преобразование вместе с другой обработкой результата. Обычно, когда пользователь запускает приложение, пользователь предоставляет путь к файлу xslt для загрузки. Но я включаю некоторые файлы xslt по умолчанию, входящие в состав моего приложения, которые пользователь может использовать без загрузки внешнего файла xslt. Я делаю это, добавляя их в src/main/resources/xslt. Моя проблема в том, что я хочу запускать тесты против этих xslt файлов на этапе тестирования. Как я могу это достичь? Должен ли я скопировать содержимое src/main/resources/xslt в цель/где-нибудь и загрузить их в код моего тестового класса? Какой плагин используется для этого?

Ответ 1

Моя проблема в том, что я хочу запускать тесты против этих xslt файлов на этапе тестирования. Как я могу это достичь?

Нечего делать, target/classes находится на пути к классу тестов. Точнее, путь класса для тестов:

  • сначала target/test-classes
  • затем target/classes
  • затем dependencies

Итак, ресурсы из src/main/resources (которые скопированы в target/classes) видны из тестов.

Ответ 2

Если вы поместите файл foo.txt внутри src/test/resources/, вы можете открыть его через:

// try-with-resource (Java 1.7)
try (InputStream is = getClass().getClassLoader().getResourceAsStream("foo.txt")) {
    // do something with is...
}

Вы также можете посмотреть maven-resources-plugin.