在maven工程中,我們會將配置文件放到,src/main/resources 下面,例如
我們需要確認resource 下的文件 編譯之后存放的位置
它編譯的路徑直接位於classes下面,這個路徑其實就是classPath的路徑,所以,在resources 根目錄下的配置文件其實就是 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");
這樣我們就可以直接拿到路徑,調用 getResourceAsStream 方法 可以直接拿到目標文件的輸入流
Maven 為我們提供了一致的項目目錄配置(源文件夾、資源文件夾等),在自動構建項目時, Maven 會按照這個配置來執行操作(編譯源文件、拷貝資源文件)。
當 Maven 規約的默認配置不能夠滿足我們的需求時,我們就要動手修改項目的 Maven 配置,讓我們的項目能夠與 Maven 很好地協同工作。這里討論的需求有:
- 配置多個源文件夾來管理我們項目的模塊
- 配置多個資源文件夾來管理我們項目模塊的資源文件
- 有些遺留代碼的一些資源文件是放在源文件夾下的,為了不改變原有項目結構,我希望 Maven 能夠從源文件夾下讀取資源文件
- 我想將項目模塊的源文件和資源文件放置在同一個文件夾下,以方便開發與維護
查看maven默認目錄結構配置,在項目根路徑下查看pom.xml,雙擊打開點擊Effective POM選項,在頁面中可以查找到maven默認的目錄結構
- <sourceDirectory>D:\workspace\meweb\src\main\java</sourceDirectory> 源代碼文件夾
- <scriptSourceDirectory>D:\workspace\meweb\src\main\scripts</scriptSourceDirectory> 腳本
- <testSourceDirectory>D:\workspace\meweb\src\test\java</testSourceDirectory> 測試代碼
- <outputDirectory>D:\workspace\meweb\target\classes</outputDirectory> 編譯后輸出的目錄
- <testOutputDirectory>D:\workspace\meweb\target\test-classes</testOutputDirectory> 測試代碼編譯輸出目錄
- <resources> 資源文件夾,可配置多個
- <resource>
- <directory>D:\workspace\meweb\src\main\resources</directory> 資源文件目錄
- <includes> 包含的文件
- <include>*.*</include>
- </includes>
- </resource>
- </resources>
- <testResources>
- <testResource>
- <directory>D:\workspace\meweb\src\test\resources</directory> 測試資源目錄
- </testResource>
- </testResources>
- <directory>D:\workspace\meweb\target</directory>
找到maven目錄結構配置,就知道怎么修改配置了,可以在pom.xml 中project -- build標簽中配置maven目錄結構,使其符合自身項目需要
修改,源代碼路徑為src/main,資源路徑為src/resources
- <sourceDirectory>src/main</sourceDirectory>
- <resources>
- <resource>
- <filtering>true</filtering>
- <directory>src/resources</directory>
- <includes>
- <include>*.*</include>
- </includes>
- </resource>
- </resources>
也可以配置多個資源目錄
- <sourceDirectory>src/main</sourceDirectory>
- <resources>
- <resource>
- <filtering>true</filtering>
- <directory>src/resources</directory>
- <includes>
- <include>*.*</include>
- </includes>
- </resource>
- <resource>
- <directory>test</directory>
- <includes>
- <include>*.*</include>
- </includes>
- </resource>
- </resources>