您好,登錄后才能下訂單哦!
小編這次要給大家分享的是Maven如何讀取配置文件路徑,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
在使用 XML 的配置方式來構建 Mybatis 的核心類 SqlSessionFactory 時,遇到了配置文件路徑總是寫不對的問題。事后看其實就是沒有好好看文檔,一直在盲人摸象。
下面時讀取 XML 配置文件的代碼:
var inputSteam = Resources.getResourceAsStream("config/mybatis.xml"); var sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputSteam);
一開始我是將配置文件放在 src/main/java/com/imxfly/config/mybatis.xml 中,然后讀取路徑寫成:com/imxfly/config/mybatis.xml ,但是提示 java.io.IOException: Could not find resource com/imxfly/config/mybatis.xml。
所以關鍵是這里的配置文件路徑如何填寫,我們知道讀取的路徑并不是按照當前開發時候的目錄結構來的,而是編譯后在項目 target 目錄下以 classes 目錄為 classpath(即類的根目錄)去讀取的。
假設我們把配置文件放在 src/main/java/com/imxfly/config 目錄下,那么使用 maven compile 編譯后去查看 target 目錄你會發現找不到這個配置文件,這是因為 Maven 編譯的時候默認只讀取 src/main/java 目錄下的 .java 文件然后編譯成 .class 文件,所以你在 target 目錄下是找不到我們的配置文件的,怎么解決呢?
推薦的做法是把這些 XML 配置文件放在 src/main/resources 目錄下。
在官方文檔(點擊查看)中清楚的描述了這一行為,其中有一句話:
Within artifact producing source directories (ie. main and test), there is one directory for the language java (under which the normal package hierarchy exists), and one for resources (the structure which is copied to the target classpath given the default resource definition).
對于 resources 目錄,其目錄結構會完整的直接拷貝到 target classpath 中,假如我們有如下 src 的目錄結構:
. ├── main │ ├── java │ │ └── com │ │ └── imxfly │ │ └── App.java │ └── resources │ └── config │ └── mybatis.xml └── test └── java └── com └── imxfly └── AppTest.java
那么編譯完后的 target 目錄結構就是:
. ├── classes ├── com │ └── imxfly │ └── App.class └── config └── mybatis.xml
所以我們在代碼中讀取配置文件的路徑就是:
var inputSteam = Resources.getResourceAsStream("config/mybatis.xml");
因為默認情況下,Maven 會在 src/main/resources 去尋找項目的資源文件。
但是如果我們的項目結構不好修改,配置文件就在 src/main/java/com/imxfly/config/mybatis.xml 怎么辦?
此時我們就需要在 Maven 配置文件 pom.xml 中去告訴 Maven 我們的資源文件放在了哪里:
<project> ... <build> ... <resources> <resource> <directory>src/main/java/com/imxfly/config</directory> </resource> <resource> <directory>src/main/java/com/imxfly/config2</directory> </resource> <resource> <directory>src/main/java/com/imxfly/config3</directory> </resource> </resources> ... </build> ... </project>
編譯時 Maven 就會把這些目錄下的文件結構完整的拷貝到 target 目錄下(就像上面完整拷貝 resources 目錄一樣),所以此時我們的讀取路徑為:
var inputSteam = Resources.getResourceAsStream("mybatis.xml");
看完這篇關于Maven如何讀取配置文件路徑的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。