1. maven项目如何引入外部文件?
maven项目一般在main目录下分为java和resources,前者是源码,后者是资源(含外部文件)。
在maven的pom.xml中指定resources所在目录后,当maven编译时,resources中的资源会被maven全量复制到target/classes中。(不依赖任何maven插件,但是想java编译顺利,至少还是引入maven-compiler-plugin)
<resources>
<resource>
<directory>src/main/resources/base</directory>
<targetPath>${basedir}/target/classes</targetPath> <!-- 可选,resource的部署目标目录 -->
<excludes>
<exclude>*.db</exclude>
</excludes>
</resource>
</resources>
在代码中想加载此类文件时,可以通过
PoiThriftServiceImpl.class.getClassLoader().getResource("resourceFileName").getPath();
获取resources下名为resourceFileName的文件。
详见:
https://blog.csdn.net/tototuzuoquan/article/details/45033467
2. 如果是给别人提供的jar包中,引入外部文件?
代码被打成jar包后,target/classes下的源码和文件会都进入jar包。
但是外部jar包在被引入后,经过maven编译,会成为一份.class和内部的java类处于同一classes目录下。
此时,类进行getClassLoader获取的是内部包的target/classes目录。
所以,外部文件需要放到内部项目的resources中,即可被jar包所发现。