Как сделать файл видимым как при развертывании проекта на сервере, так и при запуске его классов из тестовых классов? - PullRequest
0 голосов
/ 17 февраля 2020

Если я использую файл, вызывающий его напрямую:

FileInputStream fileInputStream = new FileInputStream("SR02_pattern.xls");

(файл находится в каталоге \ apv \ main-app), он не будет развернут, и, конечно, он не будет будет видно, когда проект будет запущен на сервере.

Если я помещу файл в каталог / apv / main-web / WEB-INF / classes /, он будет развернут, и я могу вызвать его

InputStream inStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("SR02_pattern.xls")

, когда проект развернут на сервере, но эта строка не будет читать файл в случае, если класс был запущен из теста.

Вероятно, место, где файл будет искать getResourceAsStream ("SR02_pattern.xls"), определяется некоторыми системными свойствами, и я могу их использовать, но я не знаю, какие свойства могут помочь.

Как я могу прочитать файл в обоих случаях по одному и тому же коду, не передавая его в качестве параметра в класс?

Есть много ответов на SO для любого из этих случаев, но я не смог найти тот, который подходит для обоих. Пути по умолчанию для обоих случаев различны.

Конечно, я могу поместить файл в обоих местах, и в случае, если файл не находится в первой папке, посмотрите его во второй, как я делаю сейчас , но поддержание двух копий подвержено ошибкам, и я хочу использовать лучший стиль.

1 Ответ

1 голос
/ 17 февраля 2020

Вы должны использовать this.getClass().getResourceAsStream('/SR02-pattern.xl') для всех частей в тесте, а также в рабочем коде. / определяет каталог root для ресурсов.

Файлы, которые вы хотите прочитать, должны находиться в src/main/resources. Это приведет к финальному боевому пакету в локации WEB-INF/classes.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...