Загрузка файла excel (.xlsx/.xls) из папки ресурсов проекта maven (src/main/resources)

Здесь я пытаюсь загрузить файл excel из папки ресурсов (src/main/resources) проекта maven.

Структура папок

MyWebApp
   |______src/main/java
   |           |____Test.java
   |
   |______src/main/resources
   |            |______test
   |                    |___hello.properties
   |                    |___template.xlsx
   |______target
            |___MyWebApp
                  |____WEB_INF
                         |___classes
                                |__test
                                     |__hello.properties
                                     |__template.xlsx

Мой подход

//loading excel file
String resource = "/test/template.xlsx";
System.out.println(this.getClass().getResource(resource) == null); // prints true

//loading properties file
String resource = "/test/hello.properties";
System.out.println(this.getClass().getResource(resource) == null); //prints false

//I have also tried below methods
this.getClass().getClassLoader().getResourceAsStream(resource); //null
new ClassPathResource(resource).getInputStream(); //null

Погуглив, я узнал, что maven фильтрует двоичное содержимое< /а>. Чтобы преодолеть это, я изменил свой pom.xml, чтобы расширения файлов .xlsx,.xls не фильтровались с помощью этого справка.

pom.xml

<configuration>                
    <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>
        <resources>
            <resource>
                 <directory>${basedir}/src/main/resources</directory>
                     <includes>
                         <include>**/*.xlsx</include>
                         <include>**/*.xls</include>
                     </includes>
             </resource>
         </resources>
</configuration>

Я смог загрузить файл свойств, но не смог загрузить файл excel, используя описанный выше подход. Со своей стороны я сослался на две приведенные ниже ссылки (Rererence-1, Reference-2), но безуспешно. Пожалуйста, помогите мне, если у вас есть мысли/идеи по этому вопросу.


person Uppicharla    schedule 06.06.2016    source источник


Ответы (1)


На странице документации maven, ссылку на которую вы указали в там сказано:

Если у вас есть как текстовые, так и бинарные файлы в качестве ресурсов, рекомендуется иметь две отдельные папки. Одна папка src/main/resources (по умолчанию) для нефильтруемых ресурсов и другая папка src/main/resources-filtered для фильтруемых ресурсов.

Поэтому вы должны хранить свойства и файлы xlsx в отдельных каталогах.

Также есть информация об исключении бинарных файлов из фильтрации:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.0.0</version>
    <configuration>
      ...
      <nonFilteredFileExtensions>
        <nonFilteredFileExtension>pdf</nonFilteredFileExtension>
        <nonFilteredFileExtension>swf</nonFilteredFileExtension>
      </nonFilteredFileExtensions>
      ...
    </configuration>
 </plugin>
person JimHawkins    schedule 06.06.2016