maven工程如何讀取resource目錄下配置文件
maven工程讀取resource目錄下配置文件
在maven工程中,我們會(huì)將配置文件放到src/main/resources下面,例如

我們需要確認(rèn)resource 下的文件編譯之后存放的位置。


它編譯的路徑直接位于classes下面,這個(gè)路徑其實(shí)就是classPath的路徑,所以,在resources 根目錄下的配置文件其實(shí)就是 classPath的路徑。
public static void main(String[] args) throws ParserConfigurationException, Exception{
ClassLoader classLoader = TestDom.class.getClassLoader();
URL resource = classLoader.getResource("test.xml");
String path = resource.getPath();
System.out.println(path);
InputStream resourceAsStream = classLoader.getResourceAsStream("test.xml");
這樣我們就可以直接拿到路徑,調(diào)用 getResourceAsStream 方法 可以直接拿到目標(biāo)文件的輸入流。
幾種讀取配置文件的方式比較(代碼在src/main/java目錄下,資源文件在src/main/resources/目錄下):
InputStream is = this.getClass().getResourceAsStream(test.xml); //拿不到資源
InputStream is = this.getClass().getResourceAsStream("/" +test.xml); // 拿到資源
InputStream is = this.getClass().getClassLoader().getResourceAsStream(test.xml); //拿到資源
- 第一種方式會(huì)從當(dāng)前類的目錄下去找,這個(gè)文件如果不和該類在一個(gè)目錄下,就找不到。
- 第二種方式會(huì)從編譯后的整個(gè)classes目錄下去找,maven也會(huì)把資源文件打包進(jìn)classes文件夾,所以可以找到。
- 第三種方式中ClassLoader就是從整個(gè)classes目錄找的,所以前面無需再加/。
maven配置resource,多個(gè)source目錄
默認(rèn)情況下
<build>
<sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
</testResources>
</build>
配置多個(gè)資源文件夾
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/labs/resources</directory>
</resource>
</resources>
</build>
使用eclipse要更新一下maven工程的配置。項(xiàng)目右鍵-》maven-》update project configuration
配置讀取源文件夾里的資源文件
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/labs/resources</directory>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.hbm.xml</include>
</includes>
</resource>
<resource>
<directory>src/labs/java</directory>
<includes>
<include>**/*.hbm.xml</include>
</includes>
</resource>
</resources>
</build>
配置多個(gè)源文件夾
<build>
<plugins>...
<!-- build-helper-maven-plugin, 設(shè)置多個(gè)源文件夾 -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${basedir}/src/labs/java</source>
<!-- 我們可以通過在這里添加多個(gè)source節(jié)點(diǎn),來添加任意多個(gè)源文件夾 -->
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring實(shí)戰(zhàn)之協(xié)調(diào)作用域不同步的Bean操作示例
這篇文章主要介紹了Spring實(shí)戰(zhàn)之協(xié)調(diào)作用域不同步的Bean操作,結(jié)合實(shí)例形式分析了Spring協(xié)調(diào)作用域不同步的Bean相關(guān)配置及使用技巧,需要的朋友可以參考下2019-11-11
Java設(shè)計(jì)模式之命令模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
命令模式就是對(duì)命令的封裝,下文中給大家介紹了命令模式類圖中的基本結(jié)構(gòu),對(duì)java設(shè)計(jì)模式之命令模式相關(guān)知識(shí)感興趣的朋友一起看看吧2017-08-08
java中sleep方法和wait方法的五個(gè)區(qū)別
這篇文章主要介紹了java中sleep方法和wait方法的五個(gè)區(qū)別,sleep?方法和?wait?方法都是用來將線程進(jìn)入休眠狀態(tài),但是又有一些區(qū)別,下面我們就一起來看看吧2022-05-05
Java后端限制頻繁請(qǐng)求和重復(fù)提交的實(shí)現(xiàn)
很多用戶會(huì)請(qǐng)求過于頻繁或者是多次重復(fù)提交數(shù)據(jù),本文主要介紹了Java后端限制頻繁請(qǐng)求和重復(fù)提交的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
Spring Boot中配置文件application.properties使用
這篇文章主要介紹了Spring Boot中配置文件application.properties使用及spring boot讀取application.properties文件的方式,需要的朋友參考下吧2018-01-01
Java 實(shí)戰(zhàn)項(xiàng)目錘煉之樸素風(fēng)格個(gè)人博客系統(tǒng)的實(shí)現(xiàn)流程
讀萬(wàn)卷書不如行萬(wàn)里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java+vue+Springboot+ssm+mysql+maven+redis實(shí)現(xiàn)一個(gè)樸素風(fēng)格的個(gè)人博客系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2021-11-11

