这里我试图从maven项目的资源文件夹(src / main / resources)加载excel文件。
文件夹结构
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 filters binary contents。为了解决这个问题,我修改了pom.xml
以允许.xlsx
,.xls
文件扩展名不能使用此help进行过滤。
的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)但没有成功。如果您对此问题有一些想法/想法,请帮助我。
答案 0 :(得分:1)
在你所链接的the maven documentation page中,有人说:
如果您同时拥有文本文件和二进制文件作为资源 建议使用两个单独的文件夹。一个文件夹 src / main / resources(默认值)表示未过滤的资源 和另一个文件夹src / main / resources-filtered为资源 过滤了。
因此,您应该将属性和xlsx文件保存在不同的目录中。
还有information about excluding binary files from filtering:
<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>