微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 找不到Gradle [META-INF / persistence.xml]

我正在使用gradle构建我的JPA / EJB项目并收到此警告:

$gradle jar
:compileJava
Note: Creating static Metadata factory ...
Note: The persistence xml file [meta-inf/persistence.xml] was not found. NO GENERATION will occur!! Please ensure a persistence xml file is available either from the CLASS_OUTPUT directory [meta-inf/persistence.xml] or using the eclipselink.persistencexml property to specify its location. 
2 warnings
:processResources UP-TO-DATE
:classes
:jar

我的项目结构:

   ProjectX
   |-src
   |---main
   |-----java
   |-------domain
   |-------ejb
   |-----resources
   |-------meta-inf
   |-----------persistence.xml

有趣的是,persistence.xml最终出现在目标jar工件中:

$jar -tf target/projectx.jar
meta-inf/
meta-inf/MANIFEST.MF
domain/
domain/Employee.class
ejb/
ejb/EmployeeEJB.class
meta-inf/persistence.xml

为什么有人抱怨[meta-inf / persistence.xml]即使它存在?

gradle文件

apply plugin: 'java'
project.buildDir = 'target'
sourceSets.all {
    output.resourcesDir = output.classesDir
}
jar{
    destinationDir=project.buildDir
}
repositories {
    mavenCentral()
}
dependencies {
    compile 'org.glassfish:javax.ejb:3.0.1','org.eclipse.persistence:javax.persistence:2.0.0'
}

我现在很快就和maven一起测试了,那里没有这样的警告.

解决方法:

编译时需要persistence.xml.实现这一目标的一种方法是:

sourceSets.main.output.resourcesDir = sourceSets.main.output.classesDir
compileJava.dependsOn(processResources)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐