在 persistence.xml 中使用 Maven 过滤的 Eclipse 错误

Eclipse error using Maven filtering in persistence.xml

我有一个使用休眠的 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?或者我使用了错误的过滤方法?

谢谢

我是这样解决的:

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.

如果问题仅来自 Eclipse 的不正确错误消息,您可以在

中禁用它

Window->Preferences->Java Persistence->JPA->Errors/Warnings->Persistence unit

只需设置 "Ignore""JAR file cannot be resolved"