eclipselink元模型与gradle和groovy

时间:2015-06-14 18:15:48

标签: java jpa gradle eclipselink build.gradle

如何从gradle中的 org.eclipse.persistence.jpa.modelgen.processor 生成元模型类?

在maven我使用像

这样的人

<plugin> <artifactId>maven-compiler-plugin</artifactId> <dependencies> <dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId> <version>${eclipselink.version}</version> </dependency> </dependencies> <configuration> <compilerArgs> <compilerArg>-Aeclipselink.persistenceunits=unit-name </compilerArg> </compilerArgs> </configuration> </plugin>

感谢您的任何建议。

2 个答案:

答案 0 :(得分:3)

对你来说可能为时已晚,但想分享我是如何解决问题的。以下将在每次编译时生成元模型。注意,如果删除delete行,编译器可能会抱怨。

ext {
    metamodelPath="$buildDir/generated-sources/metamodel"
}
compileJava {

    doFirst {
        file(metamodelPath).delete()
        file(metamodelPath).mkdirs()
    }
    options.compilerArgs += ['-Aeclipselink.persistencexml=src/main/resources/META-INF/persistence.xml', '-s', metamodelPath ]
}

答案 1 :(得分:1)

很遗憾,以前的解决方案对我不起作用。但这是一个很好的起点。缺少依赖项关闭。

这在Gradle 5.6.1和Groovy 2.5.4下有效:

ext {
    eclipselink='2.7.3'
    metamodelPath="$buildDir/generated/sources/metamodel/java/main"
    persistenceXMLLocation="src/main/resources/META-INF/persistence.xml"
}

compileJava {
    doFirst {
        file(metamodelPath).delete()
        file(metamodelPath).mkdirs()
    }
    options.compilerArgs += ["-Aeclipselink.persistencexml=${new File(project.projectDir, persistenceXMLLocation).absolutePath}", '-s', metamodelPath]
}

dependencies {
    api "org.eclipse.persistence:eclipselink:$eclipselink"
    annotationProcessor "org.eclipse.persistence:org.eclipse.persistence.jpa.modelgen.processor:$eclipselink"
}