我有一个使用hibernate的JPA Maven项目。
我必须指定一个jar文件来加载位于persistence.xml
src/main/resources/META-INF
中的外部类
<persistence unit name="PersistenceUnit" transaction-type="JTA"
...
<jar-file>lib/${project.persistencejar}.jar</jar-file>
使用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时间?或者我使用错误的方法过滤?
谢谢
答案 0 :(得分:4)
如果问题只出现在Eclipse的错误消息中,您可以在
中禁用它窗口 - &GT;首选项&GT;爪哇 持久性 - &gt; JPA-&gt;错误/警告 - &gt;持久性单元
为&#34设置&#34;忽略&#34; ;无法解析JAR文件&#34;
答案 1 :(得分:1)
我已经这样解决了:
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。