在 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"
我有一个使用休眠的 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"