在持久性中使用 Maven 过滤的 Eclipse 错误.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?或者也许我使用了错误的过滤方法?

谢谢

如果问题仅在 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。

最新更新