我是Gradle的新手。我正在尝试运行一些测试,但它们会失败并显示实体类未映射的消息。当我在 persistence.xml 中显式映射类时,一切正常。我做了一些研究,发现在构建脚本中添加这些行可以解决问题:
sourceSets.main.output.resourcesDir = sourceSets.main.output.classesDir
sourceSets.test.output.resourcesDir = sourceSets.test.output.classesDir
但它根本不适合我。如果我没有在部署描述符中指定类,我仍然会收到错误。
可能出现什么问题?
更新
我的项目结构:
我的 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>
答案 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