idea打包会过滤掉配置文件(xml,properties)的问题

本文介绍了解决IDEA中Maven项目XML配置文件未被编译的问题。通过在pom.xml中添加资源过滤配置,确保XML和properties文件在编译时被正确包含,避免了在使用Hibernate或MyBatis等框架时因配置文件缺失导致的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天使用idea导入项目的时候出现了Xxx is not mapped 错误,但是在eclipse运行的时候又是正常的,后来发现编译后的target文件中没有使hiberante配置的xml文件,所以对pom.xml文件进行了修改。 原因:IDEA的maven项目中,默认源代码目录下(src/main/java目录)的xml等资源文件并不会在编译的时候一块打包进classes文件夹,而是直接舍弃掉。如果使用的是Eclipse,Eclipse的src目录下的xml等资源文件在编译的时候会自动打包进输出到classes文件夹。在使用maven进行模块开发时,会将配置文件xml放到dao层,idea打包时只会打包java文件,会将一些mapper映射文件或者properties文件给过滤掉,部署的时候会报找不到mapper配置文件等错误,解决方法是在pom文件中增加如下配置:

<build>
  <!--配置打包时不过滤非java文件开始  -->
  <!--说明,在进行模块化开发打jar包时,maven会将非java文件过滤掉,
  xml,properties配置文件等,但是这些文件又是必需的,
  使用此配置可以在打包时将不会过滤这些必需的配置文件。
  -->
  <resources>
  	<resource>
  	    <directory>src/main/java</directory>
  	    <includes>
  	        <include>**/*.properties</include>  
                <include>**/*.xml</include>  
  	    </includes>
  	    <filtering>false</filtering>
  	</resource>
  	<resource>  
            <directory>src/main/resources</directory>  
            <includes>  
                <include>**/*.properties</include>  
                <include>**/*.xml</include>  
            </includes>  
            <filtering>false</filtering>  
        </resource>  
  </resources>
  <!--配置打包时不过滤非java文件结束 -->
</build>

 

### 解决方案 在 IntelliJ IDEA Community Edition 中解决 `mapper.xml` 文件映射问题,可以通过以下方法实现: #### 1. 确保 Mapper 文件正确注册 每一个 `Mapper.xml` 映射文件都需要在 MyBatis 项目的核心配置文件中注册。确保主配置文件中包含如下配置以加载映射文件: ```xml <mappers> <mapper resource="com/ndkj/dao/UserMapper.xml"/> </mappers> ``` 此步骤是必要的,因为 MyBatis 需要通过核心配置文件识别并加载所有的映射文件[^1]。 #### 2. Maven 资源过滤设置 如果将配置文件放置在非默认目录(如 `src/main/java`),可能会导致资源文件无法正确导出。为了解决这个问题,可以在 `pom.xml` 中添加以下配置以确保 `.xml` 和 `.properties` 文件能够被正确处理: ```xml <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> </build> ``` 此配置确保了所有需要的资源文件都能够被 Maven 正确打包和导出[^2]。 #### 3. 安装 MyBatis 插件 IntelliJ IDEA Community Edition 默认不支持 MyBatis 的高级功能(如代码跳转、语法高亮等)。可以通过安装第三方插件增强对 MyBatis 的支持。推荐安装 **MyBatis Log Plugin** 或 **MyBatis Assistant** 插件,这些插件可以提供以下功能: - 自动生成 `Mapper.xml` 文件。 - 快速从代码跳转到 `Mapper.xml` 文件及返回。 - 提供 MyBatis 语法补全和错误提示。 安装插件后,需重启 IDE 才能生效[^4]。 #### 4. 使用 Lombok 和 MyBatis Generator 自动生成代码 为了减少手动编写代码的工作量,可以在 `pom.xml` 中引入 Lombok 和 MyBatis Generator 的依赖,从而自动生成实体类和 DAO 层代码: ```xml <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.8</version> <scope>provided</scope> </dependency> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.1.5</version> </dependency> ``` 引入上述依赖后,可以使用 MyBatis Generator 自动生成 `Mapper.xml` 文件及其对应的 Java 接口文件[^3]。 --- ### 注意事项 - 如果仍然无法解决问题,请检查项目的编码格式是否统一(建议使用 UTF-8)。 - 确保 `Mapper.xml` 文件中的命名空间与对应的 Java 接口类名一致。 - 在开发过程中,定期清理并重新构建项目(`mvn clean install`),以避免缓存问题。 --- ### 示例代码 以下是一个简单的 `Mapper.xml` 文件示例: ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.dao.UserDao"> <select id="selectUserById" resultType="com.example.model.User"> SELECT * FROM users WHERE id = #{id} </select> </mapper> ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值