我有一个使用休眠的JPA的Maven项目。
我必须指定一个 jar 文件才能在位于 src/main/resources/META-INF
中的persistence.xml
加载外部类
<persistence unit name="PersistenceUnit" transaction-type="JTA"
...
<jar-file>lib/${project.persistencejar}.jar</jar-file>
使用 Maven 过滤(文件名可以根据各种 Maven 设置而更改)。我指示然后 Maven 通过包含在pom.xml
中进行过滤
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>META-INF/persistence.xml</include>
</includes>
</resource>
</resources>
运行mvn clean install
会产生可部署和工作的耳朵。
问题是:如果我在 Eclipse 项目配置中启用 JPA Facet,Eclipse 会抱怨
Multiple annotations found at this line:
- JAR file "lib/${project.persistencejar}.jar" cannot be resolved
- The path to the JAR file will vary on your runtime environment. Please make sure the
specified path fits your particular environment.
并且禁用它不会在每次更新它时构建我的 JPA 项目(因此每次持久性发生变化时都必须运行 Maven。有没有解决方法可以告诉 Eclipse 在开发时在哪里可以找到 jar?或者也许我使用了错误的过滤方法?
谢谢
如果问题仅在 Eclipse 的错误错误消息中,则可以在
窗口->首选项->Java 持久性>JPA->错误/警告->持久性单元
只需将"无法解析JAR文件"设置为"忽略"
我是这样解决的:
在persistence.xml
替换整个<jar-file>
标签,即
<persistence-unit name="PersistenceUnit" transaction-type="JTA">
...
<!-- here is where the jar file is supposed to go -->
${importjarfile}
...
</persistence-unit>
然后在pom.xml
属性
<properties>
<!-- jar of persistence -->
<importjarfile><![CDATA[<jar-file>lib/${project.persistencejar}.jar</jar-file>]]></importjarfile>
</properties>
或者src/main/filters/profilename.properties
文件中该行
importjarfile = <jar-file>lib/${project.persistencejar}.jar</jar-file>
这样,Eclipse 就不会看到jar-file
标签,也不会抱怨。在构建时,maven 将生成正确的持久性 xml。