Maven设置将src/main/java下的xml编译到classpath
2017-07-15 19:47
573 查看
这几天敲一个Hibernate的Demo,使用的是Hibernate.5.2.10.Final,发现了下面的一个错误,找不到Person.hbm.xml文件,原因是把Person.hbm.xml放到了实体类相同路径下,编译后找不到。
Maven项目创建时,默认会在src/main路径下创建两个文件夹,一个是java,一个是resources。当进行编译时,Maven默认识别java路径下的.java文件,将其编译到classpath下为.class文件。同样也会将resources下的资源文件,编译到classpath下,不管是xml文件还是properties文件。所有的这些文件都会放在target文件夹下。
这时候要是能在classpath下读到xml映射文件,除了将xml文件放到resources路径下,就是设置Maven相应功能,将java路径下的xml文件也编译到classpath中。因为在Hibernate中映射文件是对应对象模型中的实体的,所以我选择了添加相应的Maven设置,将映射文件放到和实体相同路径下,然后再编译到classpath中。如下所示,在pom文件中添加以下代码:
上面代码的意思是,设置资源文件的位置,包括src/main/java,并包含其中所有路径下的所有xml文件。
Exception in thread "main" org.hibernate.boot.MappingNotFoundException: Mapping (RESOURCE) not found : com/yasmine/hibernate/create/Person.hbm.xml : origin(com/yasmine/hibernate/create/Person.hbm.xml) at org.hibernate.boot.spi.XmlMappingBinderAccess.bind(XmlMappingBinderAccess.java:56) at org.hibernate.boot.MetadataSources.addResource(MetadataSources.java:274) at org.hibernate.boot.cfgxml.spi.MappingReference.apply(MappingReference.java:70) at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:413) at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87) at org.hibernate.boot.MetadataSources.buildMetadata(MetadataSources.java:179) at com.yasmine.hibernate.create.ExportTable.main(ExportTable.java:24) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Maven项目创建时,默认会在src/main路径下创建两个文件夹,一个是java,一个是resources。当进行编译时,Maven默认识别java路径下的.java文件,将其编译到classpath下为.class文件。同样也会将resources下的资源文件,编译到classpath下,不管是xml文件还是properties文件。所有的这些文件都会放在target文件夹下。
这时候要是能在classpath下读到xml映射文件,除了将xml文件放到resources路径下,就是设置Maven相应功能,将java路径下的xml文件也编译到classpath中。因为在Hibernate中映射文件是对应对象模型中的实体的,所以我选择了添加相应的Maven设置,将映射文件放到和实体相同路径下,然后再编译到classpath中。如下所示,在pom文件中添加以下代码:
<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </build>
上面代码的意思是,设置资源文件的位置,包括src/main/java,并包含其中所有路径下的所有xml文件。
相关文章推荐
- Maven设置将src/main/java下的xml编译到classpath(回应)
- Java maven项目编译漏掉src/main/java下的xml配置文件
- maven项目编译漏掉src/main/java下的xml配置文件
- maven项目编译漏掉src/main/java下的xml配置文件
- maven 编译部署src/main/java下的资源文件
- 解决Maven常见问题:src/main/java下面的mapper文件夹下的xml没有被加载
- 无法将maven 编译部署src/main/java下的资源文件
- maven build src/main/java目录下的xml等资源文件不被打包
- Maven在打包Mybatis项目时候src/main/java下的Mapper.xml不会打进项目解决办法
- maven 打包时,src/main/java目录下的xml等资源文件没有打包进去的问题
- maven 编译部署src/main/java下的资源文件
- maven无法对src/main/java下面的xml文件进行编译的解决办法
- 解决maven打包时漏掉src/main/java资源里的xml的问题
- maven打包war漏掉src/main/java下的xml等资源文件解决方式
- maven 编译部署src/main/java下的资源文件
- 解决Spark用Maven编译时报Exception in thread "main" java.lang.OutOfMemoryError: PermGen space异常
- maven 工程src/main/java下非java文件maven install至jar方法
- maven web项目不能创建src/main/java等文件夹的问题
- maven中在src/main/java 中放置配置文件的方法.
- 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法