美文网首页
springboot + gradle + mybatis 复制

springboot + gradle + mybatis 复制

作者: 路过的人儿 | 来源:发表于2018-12-25 19:33 被阅读0次

    问题

    部署项目并启动项目后,使用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.csdn.net/yin138/article/details/79181228 ]

    相关文章

      网友评论

          本文标题:springboot + gradle + mybatis 复制

          本文链接:https://www.haomeiwen.com/subject/hgkqlqtx.html