您的位置:首页 > 编程语言 > Java开发

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放到了实体类相同路径下,编译后找不到。

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文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: