使用Gradle

时间:2015-08-25 21:08:21

标签: java jpa gradle

我是Gradle的新手。我正在尝试运行一些测试,但它们会失败并显示实体类未映射的消息。当我在 persistence.xml 中显式映射类时,一切正常。我做了一些研究,发现在构建脚本中添加这些行可以解决问题:

sourceSets.main.output.resourcesDir = sourceSets.main.output.classesDir
sourceSets.test.output.resourcesDir = sourceSets.test.output.classesDir

但它根本不适合我。如果我没有在部署描述符中指定类,我仍然会收到错误。

可能出现什么问题?

更新

我的项目结构:

My project structure

我的 persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="bd">
        <class>br.desenvolvimento.teste.modelo.Cliente</class>
        <class>br.desenvolvimento.teste.modelo.Banco</class>
        <class>br.desenvolvimento.teste.modelo.AgenciaBancaria</class>
        <class>br.desenvolvimento.teste.modelo.ContaBancaria</class>
        <class>br.desenvolvimento.teste.modelo.Filho</class>
        <class>br.desenvolvimento.teste.modelo.Projeto</class>
        <class>br.desenvolvimento.teste.modelo.Telefone</class>

        <properties>
            <property name="hibernate.show_sql" value="false" />
        </properties>
    </persistence-unit>
</persistence>

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题并添加了

sourceSets.test.output.resourcesDir = sourceSets.test.output.classesDir

行为我解决了问题(只需要这一行)。谢谢你的提示:)

我和你的项目结构相同,所以我不知道为什么这对你不起作用。

答案 1 :(得分:0)

您使用哪个Gradle版本?如果是5.x,则需要像下面这样更新行:

sourceSets.main.output.resourcesDir = sourceSets.main.java.outputDir
sourceSets.test.output.resourcesDir = sourceSets.test.java.outputDir

您的sourceSets.main.output.classesDir在Gradle 4.x上已弃用,并在Gradle 5.x上撤回。

就我而言,build.gradle的一部分如下:

sourceSets {
  java {
    main {
      output.resourcesDir = java.outputDir
    }
  }
}

请参阅:SourceSetOutput-Gradle DSL版本5.5 https://docs.gradle.org/current/dsl/org.gradle.api.tasks.SourceSetOutput.html