IDEA將Maven項目中指定文件夾下的xml等文件編譯進classes


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” 按鈕,重新加載下。

我就是這個原因搞了很久都沒找到問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM