gradle + mybatis 复制xml等配置文件到输出目录

本文解决IDEA环境下MyBatis配置文件未被正确包含的问题,提供两种解决方案:调整配置文件位置至resource目录,或修改Gradle配置以包含src/main/java下的非Java资源。

问题

部署项目并启动项目后,使用mybatis时候,报一个错误:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found),项目在eclipse下运行毫无问题,但在idea下回报错

原因

在网上各种搜索后发现,是idea工具在编译打包的过程中,只搬运src/main/java里面的java文件到输出目录中,项目中在src/main/java目录中放置了xml或其他配置文件则不会进行搬运,这就导致了一个找不到配置文件的存在

解决方法一:

把配置相关的文件放回到resource目录下,打包时会输出到对应的resource目录下

解决方法二:

通过配置gradle的build配置,在build.gradle下加入配置:

sourceSets {
    main {
        resources {
            //可以将java目录下的所有非.java资源打包到classes下
            srcDir 'src/main/java'
        }
    }
}

 

以上的配置会把所有的非java的资源文件打包到resource目录下,这个配置兼容jar包的打包输出,本人渣,只是个搬运工,具体的原理可以去查看gradle的文档
单独打包jar包的时候则需要进行下面的配置

apply plugin: 'java'
jar {
    from('src/main/java'){
        include '**/*.xml'
    }
}

 

如果采用srcDirs的写法,那么,请注意需要如下写,否则,你会发现本应该复制的配置文件确没有复制了:

sourceSets {
    main {
        resources {
            //可以将java目录下的所有非.java资源打包到classes下
            srcDirs = ['src/main/java', 'src/main/resources']
        }
    }
}

 

sourceSets的作用就是解决源代码目录结构的配置项,比如,配置文件的目录不是src/main/resources目录,而是src/resources目录(少了main目录),那么就需要通过上面的方法修改,替换默认的配置文件位置。当然,也可以通过如下方式修改源代码目录的位置:

sourceSets {
    main {
        java{
            srcDir 'src/java'
        }
        resources {
            srcDir 'src/resources'
        }
    }
}

 

备注

另外 为什么在eclipse里面 即使pom,gradle不做这个特别配置 也没问题 原因是eclipse在build工程的时候 不依赖 maven的pom,gradle文件 用的eclipse的编译机制 不会忽略源码文件夹里面的xml文件

引用[https://blog.youkuaiyun.com/yin138/article/details/79181228 ]



转载于:https://www.cnblogs.com/Im-Victor/p/11004650.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值