[英]How to use JPA metamodel with gradle, intellij IDEA?
我正在使用 java 8、spring boot 2.0.0、spring-data-jpa(spring-boot-starter-data-jpa)、gradle、intellij。 我一直在嘗試使用 JPA 元模型,但很難找到如何配置。
實體類的元模型不僅僅是生成的。
我猜這很簡單,但現在看來這可能是錯誤的。 我怎樣才能使用它?
JDK11 / Gradle 5.0 / Hibernate 5.3.7.Final
sourceSets.main.java.srcDirs += "${buildDir}/generated"
compileJava {
options.annotationProcessorGeneratedSourcesDirectory = file("${buildDir}/generated")
}
dependencies {
annotationProcessor("javax.xml.bind:jaxb-api")
annotationProcessor("org.hibernate:hibernate-jpamodelgen")
}
生成的元模型類將在“構建/生成”時生成
如果您使用的是 JDK8 或 Hibernate 5.4+,則可能不需要annotationProcessor("javax.xml.bind:jaxb-api")
。
前幾天我使用 scalified 元模型 gradle 插件( https://plugins.gradle.org/plugin/com.scalified.plugins.gradle.metamodel )做到了這一點。 我使用的是 Spring Boot 2.0.5,但我不明白為什么它與 Spring Boot 2.0.0 不同。 我也在使用 Gradle 4.8.1。
下面是我的 build.gradle 的摘錄。
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath (
"org.springframework.boot:spring-boot-gradle-plugin:2.0.0",
"gradle.plugin.com.scalified.plugins.gradle:metamodel:0.0.1");
}
}
apply plugin: "com.scalified.plugins.gradle.metamodel"
// The plugin will default to the latest version of Hibernate if this is not specified
metamodel {
hibernateVersion = '5.2.14.Final' // For Spring Boot 2.0.0
hibernateVersion = '5.2.17.Final' // For Spring Boot 2.0.5
}
這會在 src/generated 下構建元模式文件,它們可以在您的代碼中使用。 我還必須更改 IntelliJ 設置,因為 IntelliJ 的自動構建排除了一些可能長時間運行的 Gradle 任務。 有關更多詳細信息,請參閱使用 IntelliJ IDEA和https://youtrack.jetbrains.com/issue/IDEA-175165 在項目構建中自動運行 Gradle 任務。
為了克服這個問題,我更改了這個設置:Preferences->Build/Execution/Deployment->Gradle->Runner->Delegate IDE build/run actions to Gradle。 另一種方法是根據需要手動運行 metamodelCompile gradle 任務。 如果您不經常更改實體,這會減少一點重建時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.