用于gradle和eclipse的Hibernate映射文件路径

时间:2017-05-19 11:20:24

标签: eclipse hibernate gradle

我正在为构建过程使用gradle构建,并且需要eclipse用于我们的开发环境。 Gradle期望hibernate.cfg文件夹中的文件夹.hbm中的main/resourcessrc个文件。但是eclipse希望它直接位于src文件夹中。

Gradle
  - src
     - main
        - resources
          hibernate.cfg
          package/path/.hbm files

Eclipse
  - src
    hiberante.cfg
    package/path/.hbm files

为了让它在eclipse上工作,我修改了.cfg文件,以便与前缀的文件夹进行映射。但是当我进行gradle构建时,下面的hack失败了,我得到了一个&org.hibernate.boot.MappingNotFoundException:找不到映射(RESOURCE):main / resources / com / mnox / database / hibernate / pojos / v2 /Booking.hbm.xml:`

<mapping resource="main/resources/com/mnox/database/

编辑1

我尝试了以下内容,没有为gradle工作。 为了解决我在下面做的问题

  1. 我将所有.hbm文件从src/main/resources/package/path移至src/package/path
  2. 我在.cfg
  3. 中保留了src/main/resources个文件
  4. .cfg文件中,我确保路径为package/path/Booking.hbm.xml
  5. GradleEclipse现在都有效。

    编辑2

    apply plugin: 'java'
    repositories {
        jcenter()
    }
    dependencies {
        compile 'org.slf4j:slf4j-api:1.7.21'
        testCompile 'junit:junit:4.12'
    //compile files('src/com/mnox/database/hibernate/pojos/v2')
    }
    jar {
        baseName='databasepojos'
        from ('src/com/mnox/database/hibernate/pojos/v2/*.xml')
    //    from ('build/classes/main')
    }
    sourceSets {
        main {
            java {
                srcDir 'src'
                    //includes = 'src/com/mnox/database/hibernate/pojos/v2/**'
                    //includes = ["**/*.java"]
            }
        }
    }
    allprojects {
        apply plugin: 'java'
        sourceCompatibility = 1.7
        targetCompatibility = 1.7
    }
    FileTree hbmfilesFrom = fileTree(dir: 'src/com/mnox/database/hibernate/pojos/v2/*.hbm.xml')
    task copyHBMXMLFiles(type: Copy) {
        from hbmfilesFrom
        into 'build/main/resources/com/mnox/database/hibernate/pojos/v2'
    }
    

    编辑3

    我的.classpath文件

    <?xml version="1.0" encoding="UTF-8"?>
    <classpath>
        <classpathentry kind="src" path="src"/>
        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
            <attributes>
                <attribute name="owner.project.facets" value="java"/>
            </attributes>
        </classpathentry>
        <classpathentry kind="output" path="build"/>
    </classpath>
    

1 个答案:

答案 0 :(得分:0)

假设您的应用程序和/或测试通过类路径引用hibernate.cfg,您需要做的就是确保src/main/resources和{gradle中的eclipse是一个类路径文件夹1}}。

  • 在gradle中这很简单,因为这是默认的
  • 我不确定你是如何生成你的eclipse项目的,但src不应该在classpath上。它应该是src/main/resources加上已编译的类目录。
  • 我建议不要为你的gradle项目手动创建一个eclipse项目
  • 您知道buildship eclipse plugin吗?
  • 或者,您知道可以使用gradle plugin生成.classpath.project吗?