我是否需要在Maven依赖项中包含EclipseLink modelgen包?

时间:2012-03-19 19:28:39

标签: maven eclipselink netbeans-7

我使用Netbeans 7.1编写Maven构建的JSF 2.0 Web应用程序。服务器是GlassFish 3.1,EclipseLink是JPA 2.0提供程序。

当我对项目进行“清理和构建”时,JPA元模型的所有生成源都会消失,不会再回来。所以Netbeans看到了大量未定义的符号。到处都是红点。

奇怪的是,如果我运行项目,那么元模型会以某种方式生成,然后最终返回到Maven项目使用的generated-sources目录。 Web应用程序运行。但是没有运行应用程序就无法生成元模型。有时它需要几次通过!

通过试验我发现如果我将以下内容作为依赖项,那么问题就会消失。 clean-and-build仍然会在输出中生成错误,但就IDE而言,模型就会生成。

    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
        <version>2.3.0</version>
    </dependency>

有人可以解释发生了什么,也许我应该做什么?

2 个答案:

答案 0 :(得分:3)

我使用以下依赖项:

<dependency>
  <groupId>org.eclipse.persistence</groupId>
  <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
  <version>2.5.2</version>
  <scope>provided</scope>
</dependency>

在“清理和构建”之后,您将看到元模型确实在构建时构建,并且类实际上包含在target / generated-sources / annotations文件夹中。然后将它们放入jar文件中。所以说你可以将它们视为“提供”,以便在构建期间使用它,但不包括在整个分布式包中。

答案 1 :(得分:0)

如果我理解正确,处理器在应用程序启动时(运行时)生成元模型。因此,您必须将其包含在您的Web应用程序中。

以前不存在元模型类。