IDEA將Maven項目中指定文件夾下的xml等文件編譯進classes的方法
出處:https://www.cnblogs.com/SunSpring
eclipse下面創建的Maven項目,使用mybatis。eclipse裡面能正常啟動,在idea中一直卡在maybatis 加載位置。
1、首先是不報錯也沒反應。這個時候需要我們重寫SqlSessionFactoryBean 讓錯誤顯示出來。
public class BeanFactory extends SqlSessionFactoryBean { @Override protected SqlSessionFactory buildSqlSessionFactory() throws IOException { try { return super.buildSqlSessionFactory(); } catch (NestedIOException e) { e.printStackTrace(); throw new NestedIOException("Failed to parse mapping resource:", e.getCause()); } } }
2、修改applicationContext.xml 中的mybatis配置。
<bean id="sqlSessionFactory" class="com.util.BeanFactory"> <property name="dataSource" ref="dataSource"></property> <property name="configLocation" value="classpath:mybatis-config.xml" /> </bean>
這樣就能打印出mybatis加載過程的錯誤。
重新啟動項目調試,報錯提示找不到mybatis-config.xml 中配置的**mapper.xml文件。打開編譯的target文件找到對應的mapper.xml目錄發現果然沒有xml文件,我們知道maven項目的標準項目結構如下:
(1)src/main/java:存放主代碼
(2)src/main/resources:存放項目的資源文件,如:Spring 的核心配置文件
(3)src/test/java:存放測試代碼
(4)src/test/resources:存放測試的資源文件
(5)target:目標文件輸出位置,如:編譯後的 .class 文件
(6)pom.xml:Maven 項目的核心配置文件
(7)src/main/webapp :它是 Web 項目的主目錄,用於存放 .jsp、.js、.css 等文件
我們習慣把mybatis的mapper.xml文件Mapper.java放一起,都在src/main/java下面,這樣maven打包時,如果沒有設置為資源文件則maven不會打包,maven認為src/main/java隻是java的源代碼路徑。可以看到idea裡面Modules,隻有src/test/resources是ResourceFolders。
解決辦法:修改pom.xml,還有其他方法自己可以看下。
<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> </resource> </resources> </build>
然後再重新編譯項目就行瞭。
特別提醒:idea有時候修改瞭pom.xml文件沒有重新加載,重新編譯項目的時候還是不行。這個時候我們要再maven那裡點擊下“Reimport” 按鈕,重新加載下。
我就是這個原因搞瞭很久都沒找到問題。
以上就是IDEA將Maven項目中指定文件夾下的xml等文件編譯進classes的方法的詳細內容,更多關於IDEA 將xml編譯進classes的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- mybatis那些約定的配置你真的都瞭解嗎(經驗總結)
- 在IDEA中maven配置MyBatis的流程詳解
- 在IDEA中集成maven詳細流程圖示例
- 解決idea 從mapper方法直接點進xml文件的問題
- 教你一步到位部署運行MyBatis3源碼(保姆級)